簡體   English   中英

在django admin中搜索相關字段

[英]Searching by related fields in django admin

我一直在尋找django admin中search_fields 的文檔 ,試圖允許搜索相關字段。

所以,這是我的一些模型。

# models.py
class Team(models.Model):
    name = models.CharField(max_length=255)


class AgeGroup(models.Model):
    group = models.CharField(max_length=255)


class Runner(models.Model):
    """
    Model for the runner holding a course record.
    """
    name = models.CharField(max_length=100)
    agegroup = models.ForeignKey(AgeGroup)
    team = models.ForeignKey(Team, blank=True, null=True)


class Result(models.Model):
    """
    Model for the results of records.
    """
    runner = models.ForeignKey(Runner)
    year = models.IntegerField(_("Year"))
    time = models.CharField(_("Time"), max_length=8)


class YearRecord(models.Model):
    """
    Model for storing the course records of a year.
    """
    result = models.ForeignKey(Result)
    year = models.IntegerField()

我想要的是YearRecord管理員能夠搜索跑步者所屬的團隊。 但是,只要我嘗試將Runner FK關系添加到搜索字段,我就會在搜索時出錯; TypeError: Related Field got invalid lookup: icontains

所以,這里是管理員設置,我希望能夠搜索關系。 我確定這與文檔匹配,但我在這里誤解了什么嗎? 可以解決這個問題,並將結果result__runnerRunner模型的團隊領域嗎?

# admin.py
class YearRecordAdmin(admin.ModelAdmin):
    model = YearRecord
    list_display = ('result', 'get_agegroup', 'get_team', 'year')
    search_fields = ['result__runner', 'year']

    def get_team(self, obj):
        return obj.result.runner.team
    get_team.short_description = _("Team")

    def get_agegroup(self, obj):
        return obj.result.runner.agegroup
    get_agegroup.short_description = _("Age group")

文件內容如下:

這些字段應該是某種文本字段,例如CharFieldTextField

所以你應該使用'result__runner__team__name'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM