【问题标题】:Django admin for User's objects用户对象的 Django 管理员
【发布时间】:2012-02-16 02:15:11
【问题描述】:

我想允许用户有一个管理界面来访问他们自己的视频对象。我正计划编写一些视图,以允许设置诸如“已发布”之类的属性或删除对象之类的事情。

我已经开始研究使用 django 的管理站点 - 但这似乎对于我想要的东西来说可能过于复杂(只是删除/设置发布的属性)。

一种方法比另一种更好吗?从头开始写东西还是使用管理网站?

如果我要从头开始编写一些东西 - 实现 ModelAdmin 样式操作的正确方法是什么(即 delete_selected(queryset, request))

【问题讨论】:

  • 如果您使用管理站点并覆盖您需要自定义的功能和模板会更好。休息完全取决于您手头的要求。
  • 您想要做的是极其繁琐且耗时的工作,使用 Django-Admin 可以在几分钟内完成。如果出于安全原因我不希望用户以任何方式访问管理面板,我只会考虑它。

标签: django django-models django-admin django-views


【解决方案1】:

这正是管理员应该做的!怎么可能太复杂了?即使编写几行 HTML 也需要更长的时间。

如果您自己构建它,无论多么简单,您都必须定义列出对象的视图、验证输入、检查权限、编写 HTML、实现某种映射到 python 代码的多动作系统,... .

假设您不想这样做:

您将要考虑制作multiple admin sites 并将管理结果过滤到仅通过overriding the queryset method on a ModelAdmin 属于用户的那些结果

# pasted from docs
class MyModelAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(MyModelAdmin, self).queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)

【讨论】:

猜你喜欢
  • 2020-10-08
  • 2012-08-07
  • 2018-05-30
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多