在 Django 表单字段中默认创建空的 queryset。

9 浏览
0 Comments

在 Django 表单字段中默认创建空的 queryset。

我在表单中有这些字段:

city = forms.ModelChoiceField(label="city", queryset=MyCity.objects.all())
district = forms.ModelChoiceField(label="district", queryset=MyDistrict.objects.all())
area = forms.ModelChoiceField(label="area", queryset=MyArea.objects.all())

区域是从点击城市得到的,地区是从点击区域得到的。如果使用 queryset=MyDistrict.objects.all()queryset=MyArea.objects.all(),表单的负担会非常重。我该如何使查询集默认为空?

admin 更改状态以发布 2023年5月20日
0
0 Comments

@radtek的评论应该作为答案,因为它在类似的情况下非常有用,但与被接受的答案有不同的方法。

如果您的视图中的URL会导致查询集发生变化

我正在通过示例扩展答案,如我所用:

def my_view(request):
    ...
    form = YourForm(initial={'field1':value1, 'field2':value2})
    form.fields['field3'].queryset = YourModel.objects.filter('foo'=bar)

0
0 Comments

你可以通过以下方式获取一个空的查询集:

MyModel.objects.none()

虽然我不知道你会怎样使用这个表单,但是你可以将其作为字段的查询集,以获取你需要的内容...

你可以在这里找到更多信息:here

0