Django admin - 是否可以限制用户只访问自己输入的数据?

Nat*_*atz 7 django django-admin

换句话说,我想禁止用户在所有应用程序中编辑或查看除自己输入数据之外的任何内容.

在这里读到内置管理应用程序可能无法做到这一点.如果有,是否有可用的扩展名?

谢谢

Bra*_*don 6

有关扩展管理员的一些基本信息,请参阅此博客文章:http://www.b-list.org/weblog/2008/dec/24/admin/


mon*_*kut 2

可以办到。您需要首先在 admin.py 中创建适当的 modelAdmin。

对于列表“显示”过滤,修改查询集方法:

class MyModelAdmin(admin.ModelAdmin):

    def queryset(self, request):
        return Entry.objects.filter(owner=request.user)
Run Code Online (Sandbox Code Playgroud)

对于字段过滤,根据要限制的字段类型,您可以覆盖适当的方法。

相关的 django 文档在这里: https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey

要限制外键字段输出,您可以执行以下操作:(来自 django 文档)

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "car": # The name of the field you want to limit
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
Run Code Online (Sandbox Code Playgroud)