0

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

MyApp
---Model1
---Model2

评论
---评论

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

MyApp
---Model1
---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 下)但现在链接错误......模型指向:

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

输出错误:

没有这样的表:myapp_myappcomment

代替:

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

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

一定有什么办法吗?

4

1 回答 1

0

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

您可以创建一个从该类继承的代理模型Comment,然后不需要创建其他表。

class MyAppComment(Comment):

    class Meta(Comment.Meta):
        proxy = True

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

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

于 2011-12-17T23:34:04.080 回答