1
我有一个FormChoiceField字段可以为空(假设“所有选定的”)或具有一定的值的表单。Single QuerySet选择一些记录或所有记录
什么是创建选择所有记录或一些记录,而不使用的if-else语句单查询集的最佳方式?
目前我使用的是这样的:
表:
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)
我觉得这不是Python的方式来做到这一点:使用if-else和两个分隔查询。
有什么办法可以创建一个单一的,多功能的查询?
什么是正确的方法来做到这一点?
谢谢。
谢谢西蒙。我的问题是,这两个查询使用**过滤器()**和他们有相同的字段,除了**运营商**。我已经更新了问题的代码。 – Lufa
@Lufa:这并没有什么不同,因为您可以相应地填充'filter_args'。我会更新我的答案。 –
明白了。 ** kwargs看起来更优雅。 TNX! – Lufa