Django中管理视图的更改逻辑

8ulbf1ek  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(102)

我在纯Django中创建了一个网站,我有以下模型。

class GoodsDetails(models.Model):
    serial_number = models.CharField(max_length=100)
    goods_description = models.CharField(max_length=100)
    quantity = models.CharField(max_length=100)
    gross_weight = models.CharField(max_length=100)
    is_active = models.BooleanField()

    def __str__(self):
        return f"{self.serial_number}"

字符串
我已经在管理中注册了模型,我想向超级用户显示所有的模型示例,但对于非超级用户,我想只显示那些is_active = False的示例。如何在django管理中实现这一点?
我对此进行了研究,并认为我应该为这项工作创建一个自定义权限。然而,我认为修改管理视图逻辑会更好,因为在这种情况下,更改ORM查询一点将完成工作。任何其他方法也是受欢迎的。
感谢您的建议和/或解决方案:)

drkbr07n

drkbr07n1#

admin.py中添加

from django.contrib import admin
from .models import GoodsDetails

@admin.register(GoodsDetails)
class GoodsDetailsAdmin(admin.ModelAdmin):
    list_display = ('id', 'serial_number', 'goods_description', 'quantity', 'gross_weight', 'is_active')

    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        else:
            return qs.filter(is_active=False)

字符串

相关问题