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

时间:2011-08-16 00:56:29

标签: django django-admin

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

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

由于

2 个答案:

答案 0 :(得分:6)

有关扩展admin:http://www.b-list.org/weblog/2008/dec/24/admin/

的一些基本信息,请参阅此博文

答案 1 :(得分:2)

可以做到。 您需要先在admin.py中创建相应的modelAdmin。

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

class MyModelAdmin(admin.ModelAdmin):

    def queryset(self, request):
        return Entry.objects.filter(owner=request.user)

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

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

要限制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)