关于angularjs:Django多个查询集和连接

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)
)

关于相关的事情