0

这是我的 mongodb 数据库:

**{“水果”:“石榴”,“地区”:“Nasik”,“Taluka”:“Nasik”,“收入圈”:“Nasik”,“投保额”:28000,“面积”:1200,“农民”:183 }

{“水果”:“石榴”,“地区”:“Jalna”,“Taluka”:“Jalna”,“收入圈”:“Jalna”,“投保额”:28000,“面积”:120,“农民” : 13 }

{“水果”:“番石榴”,“地区”:“浦那”,“塔卢卡”:“哈维利”,“收入圈”:“Uralikanchan”,“投保额”:50000,“面积”:10,“农民” : 100 }

{“水果”:“番石榴”,“地区”:“Nasik”,“Taluka”:“Girnare”,“收入圈”:“Girnare”,“投保额”:50000,“面积”:75,“农民” : 90 }

{“水果”:“香蕉”,“地区”:“Nanded”,“Taluka”:“Nandurbar”,“收入圈”:“NandedBK”,“投保额”:5000,“面积”:2260,“农民” : 342 }

{“水果”:“香蕉”,“地区”:“Jalgaon”,“Taluka”:“Bhadgaon”,“收入圈”:“Bhadgaon”,“投保额”:5000,“面积”:220,“农民” : 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()

现在,我想写 queires,但是当我在 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/ (给出地区的所有数据是 Nasik)

/api/tool/Uralikanchan/ (给出收入圈的所有数据是 uralikanchan)

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

/api/tool/2260/(给出 Area 的所有数据是 2260 )

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

4

2 回答 2

1

您需要覆盖视图get_queryset以在所需字段上执行所需的请求。

于 2016-12-19T10:07:30.433 回答
1

你可以使用 rest-framework-filter-backend ,创建 Filterset 看到这个文档http://www.django-rest-framework.org/api-guide/filtering/

于 2017-01-07T00:06:04.623 回答