gpt4 book ai didi

bool 值的 Django 过滤器

转载 作者:行者123 更新时间:2023-12-04 13:45:59 26 4
gpt4 key购买 nike

我是 Django 的初学者,正在做一个预订系统的学习项目。任何人都可以向我推荐一个开源 django 项目,我可以在其中检查源代码以获得最佳实践。提前致谢

当我使用下面的代码时,get 方法会“打开”或“关闭”。怎么可能是“真”/“假”?

模型.py

class Mymodel(models.Model):
...
is_xxx_approved = models.BooleanField(default=False,blank=False,null=False)
is_contracted_by_yy= models.BooleanField(default=False,blank=False,null=False)
is_zz_approved = models.BooleanField(default=False,blank=False,null=False)

过滤器.py
class MymodelFilter(django_filters.FilterSet):
class Meta:
model = Mymodel
fields = ['is_xxx_approved', 'is_contracted_by_yy', 'is_zz_approved']
exclude = [
'name',
'address',
'phone',
'email',]
filter_overrides = {
models.BooleanField: {
'filter_class': django_filters.BooleanFilter,
'extra': lambda f: {
'widget': forms.CheckboxInput,
},
},
}

模板
<div class="filter_index">
{% with field=filter.form.is_xxx_approved %}
{{ field.label_tag }}
{{ field }}
{% endwith %}

</div>
<div class="filter_index">
{% with field=filter.form.is_contracted_by_yy %}
{{ field.label_tag }}
{{ field }}
{% endwith %}
</div>
<div class="filter_index">
{% with field=filter.form.is_zz_approved %}
{{ field.label_tag }}
{{ field }}
{% endwith %}
</div>

最佳答案

我不是很清楚有人问我,但我会说你通常应该避免 CheckboxInput使用过滤器时。简而言之,它们总是评估为真/假,并且无法为过滤器字段提交空值。例如,如果您提交一个空表单,您将有效地构建此查询集:

Mymodel.objects \
.filter(is_xxx_approved=False) \
.filter(is_contracted_by_yy=False) \
.filter(is_zz_approved=False)

尽管您可能有合理的期望构造此查询集:

Mymodel.objects.all()

同样,这特别是 CheckboxInput 的问题。并且无法表示空值。相反,您应该使用默认值 Select小部件,或切换到 RadioSelect .

此外,同时使用 Meta.fields 是多余的。和 Meta.exclude选项。我建议使用 Meta.fields .

关于 bool 值的 Django 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423177/

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