使用Django模型进行简单查询

时间:2018-06-05 13:14:05

标签: django django-models django-views

我想只获得一个值(例如,一个“cantidad”,但只有一个,即使有重复的值)。

这是我的模特:

from django.db import models
from django.utils import timezone

class Data(models.Model):

    palabra = models.CharField(max_length=200)
    cantidad = models.IntegerField()
    fecha = models.DateTimeField(
                default=timezone.now)

    def returnFecha(self):
        return self.fecha

    def __str__(self):
        return self.palabra , self.cantidad , self.fecha

考虑到我已经在表/ db中填充了数据,我试过这个:

q1=Data.objects.get(cantidad=56).first()

但是这给我带来了这个错误:

get() returned more than one Data -- it returned 7!

为什么呢? first()不应该导致任何问题。

2 个答案:

答案 0 :(得分:1)

<强> get

  

返回与给定查找参数匹配的对象,应该是   采用字段查找中描述的格式。

     如果有多个对象,

get()会引发MultipleObjectsReturned   找到。 MultipleObjectsReturned异常是。的一个属性   模特课。

get返回单个对象,而不是query-set。这就是为什么我们无法在first()之后使用get

<强> filter

  

返回包含与给定查找匹配的对象的新QuerySet   参数。

filter返回query-set。您可以在first()

之后使用filter

您需要使用filter然后使用first()

Data.objects.filter(cantidad=56).first()

答案 1 :(得分:1)

你必须写:

q1 = Data.objects.filter(cantidad=56).first()

它使用cantidad=56从列表对象返回第一个对象。