我有一个带有 ModelChoiceField 字段的表单,该字段可以为空(假设“全部选中”)或具有特定值。
创建一个选择所有记录或一些记录而不使用if-else语句的单个 QuerySet 的最佳方法是什么?
目前我正在使用这样的东西:
表格:
class MyForm(forms.Form):
operators = forms.ModelChoiceField(
queryset=EpayOperators.objects.all(),
label="Choose operator",
empty_label="All",
required=False)
...
查看:
# Any security and validation checks are ommited
...
if request.POST.get('operators'):
# Some operator was selected
payments = Transactions.objects.filter(date=my_date, sum=my_sum, operator=MyForm.cleaned_data['operators'])
else:
# None selected, display all operators
payments = Transactions.objects.filter(date=my_date, sum=my_sum)
我觉得这不是pythonic的方法:将if-else与两个单独的查询一起使用。
有没有办法创建一个单一的、多功能的查询?
正确的方法是什么?
谢谢你。