我想只获得一个值(例如,一个“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()
不应该导致任何问题。
答案 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
从列表对象返回第一个对象。