反向关系搜索Django管理界面

时间:2013-06-05 20:10:35

标签: python database django django-admin

是否可以在Django Admin界面上进行反向关系搜索?

我的Django app数据库模式包含以下模型:

class Tag(models.Model):
    title = models.CharField(max_length=50)

class Publication(models.Model):
    title = models.CharField(max_length=200)
    tags = models.ManyToManyField(Tag, blank=True, related_name="publications")

我添加了一个搜索字段,用于在admin.py文件中按标题查找标记:

class TagAdmin(admin.ModelAdmin):
    list_display = ('title',)
    search_fields = ('title',)

因此,当我在django管理界面的搜索字段中键入标签标题时,会出现匹配标签标题的列表。现在我想做到这一点,如果我在搜索字段中输入标签标题,就会出现匹配的出版物。

换句话说,我想象的是:

 class TagAdmin(admin.ModelAdmin):
    list_display = ('title',)
    search_fields = ('publications',)

这当然不起作用......但这就是想法......

这甚至可能吗?和/或我是否正确地走这条路?如果是这样,有人可以建议一种方法来做这个或资源吗?如果你愿意这样做,请记住我是一个非常初学者。感谢。

1 个答案:

答案 0 :(得分:1)

您不应该尝试使用注册到Tag模型的管理类来执行此操作。相反,为Publication设置管理类并设置其search_fields:

class PublicationAdmin(admin.ModelAdmin):
    list_display = ('title',)
    search_fields = ('tags__title',)