所以我在我的博客应用程序中使用Djangos内置评论应用程序(django.contrib.comments)。我对表单显示等进行了一些更改(如文档中所述)。困扰我的最后一件事是评论模型在管理员中属于它自己的类别,如下所示:
MyApp的
---型号1
--- Modle2评论
---评论
我希望它是这样的,因为评论与MyApp模型有关。
MyApp的
---型号1
--- Modle2
---评论
我试图通过将这行代码添加到MyApps admin.py(覆盖Comment类)来实现这一目标。
class MyAppComment(Comment):
class Meta(Comment.Meta):
app_label = 'myapp'
admin.site.unregister(Comment)
admin.site.register(MyAppComment, CommentsAdmin)
这样可行(并且评论模型显示在MyApps下)但现在链接错误了...模型指向:
输出错误:
没有这样的表:myapp_myappcomment
而不是:
这是因为管理员根据应用名称和型号名称形成了它的网址...我怎样才能在管理员中更改评论模型的位置,但保留网址原样?
必须有某种方法可以做到吗?
答案 0 :(得分:0)
你没有'覆盖'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)
如果在app_label
应用中定义了MyAppComment
,您就不需要设置myapp
- 它会自动设置。