【发布时间】:2021-06-18 20:57:42
【问题描述】:
我正在使用 django_filter,在模板中以我自己的方式显示它。我想编辑其中一个过滤器的标签。为此,我需要提供过滤器类型。它在默认情况下效果很好,但我无法确定使用哪种过滤器类型。我的模型中的这个字段如下所示:
class Zamowienie(models.Model):
zam_kontrahent_fk = models.ForeignKey(Kontrahent, on_delete=models.CASCADE)
class Meta:
ordering = ['knt_kod']
verbose_name_plural = 'Kontrahenci'
objects = models.Manager()
def __str__(self):
return str(self.knt_nazwa)
在模板上它看起来像典型的选择框。我发现它不是django_filters.ChoiceFilter,而是django_filters.ModelChoiceFilter。我尝试使用它的 queryset 选项,但它只显示 primary_keys 列表(1 而不是表 foreign_key 中的 'name' 字段)
class ZamowienieFilter(django_filters.FilterSet):
zam_status = django_filters.ModelChoiceFilter(label='Status', queryset=Zamowienie.objects.order_by('zam_kontrahent_fk').values_list('zam_kontrahent_fk', flat=True).distinct())
class Meta:
model = Zamowienie
fields = [
'zam_kontrahent_fk',
]
这是正确的处理方法吗?我没有找到记录默认过滤器行为的方法,它会很有帮助,只需复制这个片段。知道如何显示值,而不是 primary_keys 列表吗?
【问题讨论】:
标签: django django-filter