在 Django 中选择更多过滤器

Posted

技术标签:

【中文标题】在 Django 中选择更多过滤器【英文标题】:Select2 more filter in Django 【发布时间】:2022-01-01 10:35:21 【问题描述】:

我在下面有这段代码,我在我的选择组件中使用Select2,它工作正常,因为我正在写它正在寻找,但我已经在互联网上搜索了如何自定义的示例在小部件中运行的查询集,有帮助吗?

select2 works very well

class ConsumidorWidget(s2forms.ModelSelect2Widget):
search_fields = [
    "nome__icontains",
    "email__icontains",
]

class ConsumoForm(forms.ModelForm):
class Meta:
    model = Consumo
    fields = ('id', 'consumidor', 'mesconsumo', 'anoconsumo', 'valorapagar', 'valorhidrometro',
              'dataleitura', 'datamissao', 'datavencimento', 'foipago',)

    exclude = ('bairro',)
    mesconsumo = forms.ChoiceField()

    widgets = 
        "consumidor": ConsumidorWidget,
    

【问题讨论】:

【参考方案1】:

使用ModelChoiceField:

consumidor = forms.ModelChoiceField(
    queryset=Consumo.objects.all(),
    widget=ConsumidorWidget)

或者您可以尝试覆盖__init__ 方法:

def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['consumidor'].queryset = Consumo.objects.all()

【讨论】:

以上是关于在 Django 中选择更多过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Django:管理员,向多项选择字段添加一些新过滤器

当在另一个下拉列表上进行选择时,如何在 Django 的管理员中过滤下拉列表

使用Django的html中的多个下拉菜单过滤器

Django如何实现`filter`?是选择一切然后过滤?

如何在Django-Countries中使用Django Filter的语言选择的详细名称

将 kwargs 传递给 Django 过滤器