3

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

我的 Django 应用程序数据库架构由以下模型组成:

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',)

哪个当然行不通……但这就是想法……

这甚至可能吗?和/或我是否以正确的方式去做这件事?如果是这样,有人可以建议一种方法或资源吗?如果您愿意这样做,请记住我是一个初学者。谢谢。

4

1 回答 1

3

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

class PublicationAdmin(admin.ModelAdmin):
    list_display = ('title',)
    search_fields = ('tags__title',)
于 2013-06-05T20:15:38.023 回答