将来自不同app / object的模型分组到一个Admin块中

时间:2012-05-12 04:32:16

标签: django django-models django-admin

是否可以将来自不同应用的模型分组为1个管理块?

例如,我的结构是

project/
  review/
    models.py -  class Review(models.Model):
  followers/
    models.py -  class Followers(models.Model):
    admin.py 

followers/admin.py,我致电

 admin.site.register(Followers)
 admin.site.register(Review)

这是将它们分组到一个管理块中,以便管理员轻松找到它们。

我试过了,但是Review模型没有显示在Followers管理块中,我找不到相关的文档。

1 个答案:

答案 0 :(得分:39)

Django Admin将模型设置为由Model._meta.app_label定义的应用程序管理阻止。因此,在Review中注册followers/admin.py仍会将其发送到应用review

所以制作一个proxy model Review并将其放入“评论”应用

class ProxyReview(Review):
    class Meta:
        proxy = True    
        # If you're define ProxyReview inside review/models.py,
        #  its app_label is set to 'review' automatically.
        # Or else comment out following line to specify it explicitly               
        # app_label = 'review'

        # set following lines to display ProxyReview as Review
        # verbose_name = Review._meta.verbose_name
        # verbose_name_plural = Review._meta.verbose_name_plural


# in admin.py
admin.site.register(ProxyReview)

此外,您可以将FollowersReview放到同一个应用中,也可以为它们设置相同的app_label

自定义管理视图或使用第3部分仪表板可能也可以实现目标。