我想在 python 脚本中编写查询,最终将从 django 调用这些查询

I want to writing a queires in python script which is ultimately going to call these queries from django

这是我的 mongodb 数据库:

**{"Fruit" : "Pomegranate", "District" : "Nasik", "Taluka" : "Nasik", "Revenue circle" : "Nasik","Sum Insured":28000,"Area":1200,"Farmer":183}

{"Fruit" : "Pomegranate", "District" : "Jalna", "Taluka" : "Jalna", "Revenue circle" : "Jalna","Sum Insured":28000,"Area":120,"Farmer":13}

{"Fruit" : "Guava", "District" : "Pune", "Taluka" : "Haveli", "Revenue circle" : "Uralikanchan", "Sum Insured": 50000, "Area": 10, "Farmer": 100}

{"Fruit" : "Guava", "District" : "Nasik", "Taluka" : "Girnare", "Revenue circle" : "Girnare","Sum Insured":50000,"Area":75,"Farmer":90}

{"Fruit" : "Banana", "District" : "Nanded", "Taluka" : "Nandurbar", "Revenue circle" : "NandedBK","Sum Insured":5000,"Area":2260,"Farmer":342}

{"Fruit" : "Banana", "District" : "Jalgaon", "Taluka" : "Bhadgaon", "Revenue circle" : "Bhadgaon","Sum Insured":5000,"Area":220,"Farmer":265}**

这是我的 models.py 文件:

from mongoengine import Document,  fields
from django.db.models import Q


class Tool(Document):
    Fruit = fields.StringField(required=True)
    District = fields.StringField(required=True)
    Taluka = fields.StringField(required=True)
    Revenue_circle = fields.StringField(required=True)
    Sum_Insured = fields.StringField(required=True)
    Area = fields.StringField(required=True)
    Farmer = fields.StringField(required=True)

这是我的 serializers.py 文件:

from rest_framework import serializers
from rest_framework_mongoengine.serializers import DocumentSerializer
from models import Tool


class ToolSerializer(DocumentSerializer):
    #id = serializers.CharField(read_only=False)
    class Meta:
        model = Tool
        #fields=['Fruit']

这是我的 views.py 文件

from __future__ import unicode_literals
from django.template.response import TemplateResponse
from rest_framework_mongoengine.viewsets import ModelViewSet as MongoModelViewSet
from app.serializers import *


def index_view(request):
     context = {}
    return TemplateResponse(request, 'index.html', context)


class ToolViewSet(MongoModelViewSet):
    lookup_field = 'Fruit'
    serializer_class = ToolSerializer

    def get_queryset(self):
        return Tool.objects.all()

现在,我想写问答, 但是当我在 views.py 文件中使用 lookup filed='Fruit' 时 http://127.0.0.1:8000/api/tool/Banana/
我得到了香蕉水果的所有信息。

127.0.0.1:8000/api/tool/Guava/ 然后我得到关于番石榴的水果的所有信息。

查找字段用于单个字段, 但是,我想写所有类型的组合查询。 例如: /api/tool/Guava/(给出水果的所有数据是番石榴)

/api/tool/Nasik/(给出所有地区的数据是纳西克)

/api/tool/Uralikanchan/(revenue_circle 的所有数据都是 uralikanchan)

/api/tool/265(给农民的所有数据是 265)

/api/tool/2260/(给出面积的所有数据为 2260)

那么,你能告诉我如何编写将这些查询调用到 django 的所有类型的组合查询吗?

您需要覆盖视图的 get_queryset 才能在您想要的字段上执行您想要的请求。

你可以使用 rest-framework-filter-backend ,创建 Filterset 请参阅此文档 http://www.django-rest-framework.org/api-guide/filtering/