我该怎么做?
如果设置了请求,我只会过滤什么。
离。如果未设置性别,则过滤器将为: Test.objects.filter(categories = category,brands = brand)
def index(request):
gender = request.GET.get('gender')
category = request.GET.get('category')
brand = request.GET.get('brand')
Test.objects.filter(genders=gender, categories=category, brands=brand)
答案 0 :(得分:2)
如果您意识到过滤条件可以作为关键字参数传递,则解决方案变得更容易可视化。对于例如考虑下面的片段。这是一种冗长的方式:
conditions = dict()
for filter_key, form_key in (('genders', 'gender'), ('categories', 'category'), ('brands', 'brand')):
value = request.GET.get(form_key, None)
if value:
conditions[filter_key] = value
Test.objects.filter(**conditions)
当然,另一种方法是使用表单而不是直接从GET请求中获取值。
答案 1 :(得分:0)
def index(request):
gender = request.GET.get('gender', None)
category = request.GET.get('category')
brand = request.GET.get('brand')
results = Test.objects.filter(categories=category, brands=brand)
if gender:
results = results.filter(genders=gender)
如果未指定性别,则性别变量将设置为“无”,因此,如果不执行性别块,请执行以下操作。