Django multiple queryset and concatenation
我正在django/angular中构建高级搜索,用户可以从不同的模型中选择一个或多个字段。
1 2 3 4 5 6 7 8 | ############# ############# ############# Model1 Model2 Model2 ############# ############# ############# Field1 Field1 Field1 Field2 Field2 Field2 Field3 Field3 Field3 ...... Fk(Model1) Fk(Model1) ....... .......... |
Model2、Model3和其他模型具有对Model1的ForeignKey引用。
所选模型字段将发送到django视图,以进行进一步查询和结果串联。
VIEW
1 2 3 4 5 6 7 8 9 10 11 12 | def customsearch(request): queryrequest = json.loads(request.body) result = [] print queryrequest """ [{u'value': u'Field1', u'key': u'Model1'}, {u'value': u'Field2', u'key': u'Model2'}, {u'value': u'Field3', u'key': u'Model2'}, {u'value': u'Field2', u'key': u'Field2'}]""" for item in queryrequest: if(item['key'] == 'Model1'): result.append(Model1.objects.filter().values(item['value'])) else: result.append(item['key'].objects.filter().values(item['value']).select_related('fk')) |
我收到一份词典目录的申请。列表由键(型号名称)和值(字段)组成。
如何根据上述示例进行查询并关联结果?
我是姜哥的新手!
欢迎提供任何帮助和建议。
如果你的模型2,模型3有FK到模型1,
这是示例(您应该为Model2、Model3 ForeignKey字段使用相关的名称)
1 2 3 4 5 6 | from django.db.models import Q Model1.objects.filter( Q(Field1=value1) & Q(model2_related_name__Field2=value2) & Q(model3_related_name__Field3=value3) ) |
关于相关的事情