如何编写Python问答并导入它们?

2024-06-16 10:50:25 发布

您现在位置:Python中文网/ 问答频道 /正文

数据:

{
  "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
}

我想写所有类型的组合查询,如果有人想要的信息只为水果,这是番石榴那么输出将是准确的数据番石榴只。你知道吗

另外,如果有人只想要香蕉和番石榴水果的信息,那么输出将是香蕉和番石榴的精确数据。你知道吗

如果水果等于香蕉

输出将是香蕉的数据

如果水果等于番石榴

输出将是番石榴的数据

如果水果等于香蕉和番石榴

输出将是香蕉和番石榴的数据

另外,如果有人只想知道Nasik地区的信息,那么输出将是Nasik地区的精确数据。查询“地区”

如果地区等于纳西克

输出将是Nasik区的数据

如果地区等于南德

输出将是南德区的数据

同样,还有“收入圈、农民等”的查询

我知道如何使用find在mongoshell中编写这个查询

你知道吗db.Wbcis.find文件({“水果”:“香蕉”})

你知道吗db.Wbcis.find文件({“District”:“Nasik”})等。。。你知道吗

但是我想用python脚本编写查询,所以我很困惑型号.py以及视图.py文件。你知道吗

我在中使用Q对象创建并键入查询型号.py你知道吗

型号.py

from django.contrib.auth.models import User

from django.db import models

from django.db.models import Q

class Wbcis(models.Model):  
  Fruit = models.CharField(max_length=50)  
  District = models.CharField(max_length=50)   
  Taluka = models.CharField(max_length=50)    
  Revenue_circle = models.CharField(max_length=50)   
  Sum_Insured = models.FloatField()   
  Area = models.FloatField()
  Farmer = models.IntegerField()


def __str__(self):

    return self.Fruit

def save(self, *args, **kwargs):

    super().save(*args, **kwargs)

class Meta:

  verbose_name_plural = 'wbcis'

from models import Wbcis
Guava =Wbcis.objects.filter(Q(Fruit='Guava'))
print Guava
Banana= Wbcis.objects.filter(Q(Fruit='Banana'))
print Banana  
Pomegranate= Wbcis.objects.filter(Q(Fruit='Pomegranate'))   
print Pomegranate
Guava_Banana=Wbcis.objects.filter(Q(Fruit='Guava')&Q(Fruit='Banana'))   
print Guava_Banana

但是,我知道这不是正确的查询方式。 我需要把这个写进for循环或者while循环。 你能帮我用for循环写这个查询吗?你知道吗


Tags: 数据modelsareaguava番石榴bananasumfruit
1条回答
网友
1楼 · 发布于 2024-06-16 10:50:25

我不知道你想要什么,但你的问题似乎是对的。你知道吗

我认为您使用for循环的意思是,您可以迭代查询(从技术上讲,是QuerySet)以获得结果。你知道吗

例如:

Guava = Wbcis.objects.filter(Q(Fruit='Guava'))
for guava_entry in Guava:
    # Do something with the returned element here:
    print guava_entry

如果要按多个条件进行筛选,只需在筛选器中设置多个条件即可。例如,在南德买香蕉

Guava = Wbcis.objects.filter(Fruit="Banana", District="Nanded")

你不需要使用for循环。默认情况下,filter使用and组合您的条件。这意味着在上面的例子中,水果必须是“香蕉”、地区必须是“南德”。你知道吗

看看你的问题中的例子,你有这样的疑问:

Guava_Banana=Wbcis.objects.filter(Q(Fruit='Guava')&Q(Fruit='Banana'))   

此查询永远不会返回任何结果。它要求的对象既有“番石榴”的果实,也有“香蕉”的果实。你想要的是:

Guava_Banana=Wbcis.objects.filter(Q(Fruit='Guava') | Q(Fruit='Banana'))

这个新查询返回水果为“番石榴”或“香蕉”的对象。你知道吗

我理解这可能会让人困惑,因为您想返回GuavasBananas,但可以将其视为布尔表达式。你知道吗

您可以将其包装为如下函数:

def get_wbcis(fruit=None, district=None, talkua=None, min_farmer=None, max_farmer=None, limit=100):
    query = Wbcis.objects.all()
    if fuit is not None:
        query = query.filter(Fruit=fruit)

    if district is not None:
        query = query.filter(District=district)

    if taluka is not None:
        query = query.filter(Taluka=taluka)

    if min_farmer is not None:
        query = query.filter(Farmer__gte=min_farmer)

    if max_farmer is not None:
        query = query.filter(Farmer__lt=max_farmer)

    return query[:limit]

limit参数确保最多返回多个结果。你知道吗

本例中的minu farmer使用__gte查询运算符,这意味着将返回farmer大于或等于min_farmer的结果。你知道吗

max\u farmer使用\uu lt运算符,因此将返回farmer小于但不等于max_farmer的结果。你知道吗

类似地,如果需要不同的不等式过滤器,可以使用\uu gt或\uu lte。你知道吗

你的views.py可以这样做:

import json
from django.forms.models import model_to_dict
from django.http import JsonResponse
from models import get_wbcis

def wbcis_view(request):
    fruit = request.GET.get("fruit")
    district = request.GET.get("district")
    taluka = request.GET.get("taluka")
    min_farmer = request.GET.get("min_farmer")
    max_farmer = request.GET.get("max_farmer")

    wbcis = get_wbcis(fruit, district, taluka, min_farmer, max_ffarmer)

    #convert them to JSON:
    dicts = []
    for wbci in wbcis:
        dicts.append(model_to_dict(wbci))

    return JsonResponse(dicts)

相关问题 更多 >