在django admin中列出与代理模型相关的外键

时间:2014-05-26 15:50:16

标签: python django django-admin

我的models.py看起来像这样:

class Author(models.Model):
    name = models.CharField()

class DraftBooks(models.Model):
    title = models.CharField()
    author = models.ForeignKey(Author)
    status_choices = ((1,Draft),(2,Published))
    status = models.SmallIntegerField(choices=status_choices)

class PubBooks(DraftBooks):
    class meta:
        proxy = True
        verbose name = 'Published Books'

我正在使用代理模型,因为我想要一个不同的更改列表视图,用于已经发布的草稿状态和书籍。要实现这一点,我的admin.py看起来像这样:

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

class DraftBooksAdmin(admin.ModelAdmin):
   list_display = ('title','author','status')
   def queryset(self):
        return DraftBooks.objects.filter(status='1')
admin.site.register(DraftBooks, DraftBooksAdmin) 

class PubBooksAdmin(admin.ModelAdmin):
    list_display = ('title','author','status')
    def queryset(self):
        return PubBooks.objects.filter(status='2')
admin.site.register(PubBooks, PubBooksAdmin) 

这个设置工作得很好。在我的管理员中,现在我有3个更改列表视图,一个显示所有作者的列表,一个显示处于草稿状态的书,最后一个显示书籍列表处于公布状态。

我现在需要在作者列表概述中为每个项目(作者)添加一个超链接,该链接指向显示特定作者所有书籍的视图。例如:

  1. J.K。罗琳(书)
  2. J.R.R。托尔金(书籍)
  3. 其中books是指向显示特定作者所有书籍的网站的超链接。 现在我对如何执行此操作完全无能为力。Django Xadmin有一个插件只提供此功能。This Stackoverflow问题也提供了这个问题的答案。但问题是它们不能在代理中工作我有自定义过滤器的模型。当我试图获取作者的书籍清单时,我只得到处于草稿状态的书籍。我理想地想要所有书籍,草稿和作者出版。如何做我实现了这个目标吗?

0 个答案:

没有答案