Django admin - 限制用户访问

Chr*_*ris 4 django django-admin

我想知道django管理页面是否可以用于外部用户.

假设我有这些模型:

class Publisher(models.Model):
  admin_user = models.ForeignKey(Admin.User)
  ..

class Publication(models.Model):
  publisher = models.ForeignKey(Publisher)
  ..
Run Code Online (Sandbox Code Playgroud)

我不确定admin_user是什么 - 也许它可能是管理员用户的电子邮件?

无论如何.有没有办法允许管理员用户只添加/编辑/删除其发布者与该管理员用户相关联的出版物?

-谢谢!-克里斯

Chr*_*ris 15

如果您需要在自己的应用程序中使用更细粒度的权限,则应注意Django的管理应用程序通过以下方法支持此操作,这些方法可以在ModelAdmin的子类上重写.请注意,所有这些方法都接收当前的HttpRequest对象作为参数,允许基于特定的经过身份验证的用户进行自定义:

  • queryset(self, request):应该返回一个QuerySet,以便在管理员的模型对象列表中使用.此QuerySet中不存在的对象将不会显示.
  • has_add_permission(self, request): 如果允许添加对象,则返回True,否则返回False.
  • has_change_permission(self, request, obj=None):如果允许编辑obj,则返回True,否则返回False.如果obj为None,则应返回True或False以指示是否一般允许编辑此类对象(例如,如果False将被解释为意味着当前用户不允许编辑此类型的任何对象).
  • has_delete_permission(self, request, obj=None):如果允许删除obj,则返回True,否则返回False.如果obj为None,则应返回True或False以指示是否一般允许删除此类型的对象(例如,如果False将被解释为意味着当前用户不允许删除此类型的任何对象).

[django.com]