2011-12-17 108 views
0

因此,我为我的博客应用程序使用Djangos内置评论应用程序(django.contrib.comments)。我对表单显示等进行了一些更改(如文档中所述)。困扰我的最后一件事是,评论模型是在它自己的类别中的管理,像这样:自定义django评论管理槽

MyApp
---Model1
---Modle2

Comments
---Comments

我希望它是这样的,因为评论是绑到MyApp模型。

MyApp
---Model1
---Modle2
---Comments

我试图加入这一行的代码安装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/

,其输出的错误:

代替

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

这是因为管理的形式是根据应用程序名称和型号名称...我怎么可能只是改变在管理注释模型的位置,但离开的URL网址像他们那样?

有一定的办法可以做到吗?

+0

你有没有运行manage.py syncdb? – benjaoming 2011-12-17 18:33:47

+0

是啊...试过(删除数据库,从头开始)...同样的错误 – Veles 2011-12-17 19:32:34

回答

0

您还没有'覆盖'Comment类 - 通过继承它,您实际上使用multi table inheritance创建了子模型。这就是为什么需要创建另一个表。

您可以创建proxy model继承Comment类,然后不需要创建额外的表。

class MyAppComment(Comment): 

    class Meta(Comment.Meta): 
     proxy = True 

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

你不应该需要设置app_label如果MyAppCommentmyapp应用程序定义 - 它会自动设置。

+0

工作很好......谢谢! – Veles 2011-12-18 00:00:48