自定义django评论管理员插槽

时间:2011-12-17 15:30:59

标签: python django django-comments

所以我在我的博客应用程序中使用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下)但现在链接错误了...模型指向:

  

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

输出错误:

  

没有这样的表:myapp_myappcomment

而不是:

  

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

这是因为管理员根据应用名称和型号名称形成了它的网址...我怎样才能在管理员中更改评论模型的位置,但保留网址原样?

必须有某种方法可以做到吗?

1 个答案:

答案 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 - 它会自动设置。