gpt4 book ai didi

django - 根据外键中的字段在Django admin中过滤list_filter

转载 作者:行者123 更新时间:2023-12-04 17:49:42 24 4
gpt4 key购买 nike

我想通过外键指向的表中的字段过滤我的 list_filters 之一。

我的模型:

class Organisation(models.Model):
name = models.CharField()
COMPANY = 'COMPANY'
CHARITY = 'CHARITY'
ORG_CHOICES = (
(COMPANY, 'COMPANY'),
(CHARITY, 'CHARITY'),
)
type = models.CharField(choices = ORG_CHOICES)

class Issue(models.Model):
name = models.CharField
charity = models.ForeignKey(Organisation)

我想放入 IssueAdmin:
list_filter = (charity)

并为此提供一份慈善机构名单。目前它只列出组织模型中的所有内容,包括慈善机构和公司。例如,我现在在过滤器中得到这个列表:
oxfam
yamaha
greenpeace
microsoft

当我想要一个列出的过滤器时:
oxfam
greenpeace

我可以通过将组织表分成两个表(慈善机构和公司)来解决这个问题,但这感觉不对。

看起来 SimpleListFilter 应该可以工作,但到目前为止我还没有运气。基本上我想要一些使用以下过滤器并返回过滤器的慈善机构列表的东西:
Organisation.objects.filter(type = 'CHARITY')

我的(可怜的)过滤器尝试:
class CharityFilter(SimpleListFilter):
title = _('Charity')
parameter = _('charity__type')
def lookups(self, request, model_admin):
return Organisation.objects.filter(type = 'CHARITY')

def queryset(self, request, queryset):
if not self.value() is not None:
return queryset.filter(type = 'CHARITY')
else:
return queryset

谁能帮我?

最佳答案

为什么不只过滤类型,即:

class OrganisationAdmin(admin.ModelAdmin):
list_filter = ("type", )
# etc

它将允许您拥有所有组织、仅公司或仅慈善机构。

否则,如果您真的想将“慈善机构”和“公司”视为具有不同管理员的不同实体,但仍将它们保留在同一个表中,则可以使用代理模型,但我不明白这里的意义。

编辑:过滤 issues基于组织类型,它的工作方式与对中继模型的查询相同(这并不奇怪,因为这正是发生的事情)
class IssueAdmin(admin.ModelAdmin):
list_filter =("charity__type", )

关于django - 根据外键中的字段在Django admin中过滤list_filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149337/

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