gpt4 book ai didi

python - 在 django admin 中按相关字段搜索

转载 作者:太空狗 更新时间:2023-10-29 16:53:53 24 4
gpt4 key购买 nike

我一直在看the docs对于 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:相关字段的查找无效:​​icontains

所以,这里是管理设置,我希望能够在其中搜索关系。我确定这与文档相符,但我在这里误解了什么吗?是否可以解决这个问题并将 result__runner 扩展到 Runner 模型的团队字段?

# 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'

关于python - 在 django admin 中按相关字段搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24569687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com