Создание простого запроса с моделями Django - PullRequest
0 голосов
/ 05 июня 2018

Я хочу получить только одно значение (например, одну «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

Учитывая, что я уже заполнил таблицу / базу данных данными, я попробовал это:

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

Но я получаю эту ошибку:

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

Почему?Наличие first() не должно вызывать никаких проблем.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы должны написать:

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

Возвращает первый объект из вашего объекта списка с cantidad=56.

0 голосов
/ 05 июня 2018

get

Возвращает объект, соответствующий заданным параметрам поиска , который должен иметь формат, описанный в полевых поисках.

get () повышает MultipleObjectsReturned, если найдено более одного объекта.Исключение MultipleObjectsReturned является атрибутом класса модели.

get возвращает один объект, а не query-set.Вот почему мы не можем использовать first() после get.

filter

Возвращает новый QuerySetсодержит объекты, которые соответствуют заданным параметрам поиска.

filter возвращает query-set.Вы можете использовать first() после filter

Вам нужно использовать filter, а затем first(),

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