Vie*_*iet 14 django django-models django-admin django-queryset
默认情况下,Django管理站点显示相关模型/表的所有记录以供查看.如何仅显示符合特定条件的记录?
Wil*_*rdy 28
在管理员定义中,您可以定义一个queryset()方法,该方法返回该模型的管理员的查询集.例如:
class MyModelAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(MyModelAdmin, self).queryset(request)
return qs.filter(user=request.user)
Run Code Online (Sandbox Code Playgroud)
然后只有user=request.user管理员可以看到对象.
我知道这是一个“可接受的答案”,但是我只是想把这个扔出去,因为我在追求其他东西的同时遇到了这个答案,并意识到我有一个替代解决方案,我发现并经常使用它,比起我来说,它提供了更精细的级别控制接受的答案。
class TestAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "FIELD":
kwargs["queryset"] = TestModel.objects.filter(test=False)
return super(TestAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "FIELDS":
kwargs["queryset"] = TestModel.objects.filter(test=False)
return super(TestAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
Run Code Online (Sandbox Code Playgroud)