【问题标题】:Custom django comments admin slot自定义 django 评论管理槽
【发布时间】:2011-12-17 15:30:58
【问题描述】:

所以我在我的博客应用程序中使用 Django 内置 cmets 应用程序 (django.contrib.cmets)。我对表单显示等进行了一些更改(如文档中所述)。困扰我的最后一件事是 Comments 模型在管理中属于它自己的类别,如下所示:

我的应用程序
---型号1
---模型2

评论
---评论

我希望它是这样的,因为 cmets 与 MyApp 模型相关联。

我的应用程序
---型号1
---模型2
---评论

我试图通过将这行代码添加到 MyApps admin.py(覆盖 Comment 类)来实现这一点

class MyAppComment(Comment):

    class Meta(Comment.Meta):
       app_label = 'myapp'

admin.site.unregister(Comment)
admin.site.register(MyAppComment, CommentsAdmin)

这可行(并且评论模型显示在 MyApps 下)但现在链接错误...模型指向:

http://www.mysite.com/admin/myapp/myappcomment/

输出错误:

没有这样的表:myapp_myappcomment

代替:

http://www.mysite.com/admin/comments/comment/

这是因为管理员根据应用名称和模型名称形成了它的 url...我怎么能在管理员中更改 Comments 模型的位置但保持 url 不变?

一定有办法吗?

【问题讨论】:

  • 运行 manage.py syncdb 吗?
  • 是的...试过了(删除数据库并从头开始)...同样的错误

标签: python django django-comments


【解决方案1】:

您还没有“覆盖”Comment 类——通过继承它,您实际上已经使用multi table inheritance 创建了一个子模型。这就是需要创建另一个表的原因。

您可以创建一个继承自 Comment 类的 proxy model,然后不需要创建其他表。

class MyAppComment(Comment):

    class Meta(Comment.Meta):
        proxy = True

admin.site.unregister(Comment)
admin.site.register(MyAppComment, CommentsAdmin)

如果在myapp 应用程序中定义了MyAppComment,则不需要设置app_label - 它将自动设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2012-04-10
    • 1970-01-01
    • 2011-10-27
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多