我正在用纯 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 查询就可以完成工作。也欢迎任何其他方法。
感谢您的建议和/或解决方案:)
在
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)