在admin中按外键ID搜索

Alf*_*oli 16 django search foreign-keys django-admin

我试图实现一些看似简单的东西,但我无法找到任何答案,无论是在谷歌还是在这里.我有一个Django模型,简单的东西:

class Shipment(models.Model):
    id = models.AutoField(primary_key=True)
    transaction = models.ForeignKey(Transaction)
Run Code Online (Sandbox Code Playgroud)

我希望能够通过transaction.id在我的发货管理页面中进行搜索.为了清楚起见,我想要这个(这段代码显然不起作用):

class ShipmentAdmin(admin.ModelAdmin):
    list_display = ('id', 'transaction')
    search_fields = ['id', 'transaction.id']
Run Code Online (Sandbox Code Playgroud)

这不起作用导致transaction.id没有命名字段.任何的想法?通过"搜索",我的意思是能够在"货件管理"页面的搜索框中插入我的交易ID,按"搜索"并自动检索适当的交易.

Jam*_*esO 45

与其他管理选项一样,您需要使用__作为外键,例如

search_fields = ['id', 'transaction__id']
Run Code Online (Sandbox Code Playgroud)

  • 如果您要上两层外键,则它似乎不起作用,即“allocation__project__name”在分配具有项目的 FK 并且项目具有名称的情况下不起作用。你怎么解决这个问题?我不断收到“<field> 不是可调用的,是 <model> 的属性” (3认同)

jpi*_*pic 6

search_fields文档:

您还可以使用查找API"跟随"表示法对ForeignKey或ManyToManyField执行相关查找

解:

search_fields = ['id', 'transaction__id']
Run Code Online (Sandbox Code Playgroud)