Как я могу знать, пустой ли Керисет де Джанго?

Я нуждаюсь в том, чтобы проверить, Queryset, который я получаю в django, - пустой ли например:
persona = Persona.objects.get(ci="12345678901")
мне было бы надо знать если persona он содержит какую-то стоимость и не, как делание этого, код эта в views.py

1
задан 21.07.2016, 23:38
6 ответов

Когда ты используешь get() НЕ , ты получаешь QuerySet, если не объект прямо, но у тебя есть даже asГ - два выбора:

Первая с get():

try:
   persona = Persona.objects.get(ci="12345678901")
except Persona.DoesNotExist:
   persona = None

aquГ - ты знаешь, что, если человека нет None, ты получил ее, иначе он не существует.

Из-за QuerySet:

 persona = Persona.objects.filter(ci="12345678901").exists()

, Которые возвращают True, если encontrГі в кого-то с этой caracterГ-stica или False если не это encontrГі

4
ответ дан 24.11.2019, 13:47

В этом случае в особенности Persona.objects.get(ci="12345678901") НЕ возвращает QuerySet а объект класса Persona. Если ты нуждаешься в том, чтобы продолжить использовать метод .get() из ORM, podrГ-схвати делать это этой формой:

try:
    persona = Persona.objects.get(ci="12345678901")
except Persona.DoesNotExist:
    # entrará aqui cuando no exista ningun elemento
    # que coincida con la busqueda
    pass
except Persona.MultipleObjectsReturned:
    # entrará aqui cuando se haya encontrado más de un
    # objeto que coincida
    pass

, Если то, в чем ты нуждаешься, состоит sГіlo в том, чтобы знать, существует ли или нет он, и поле ci, которое ты используешь, чтобы просачиваться, - Гєnico или Вашему недостатку возможно доверять в Г©l, ты можешь использовать mГ©todo .filter() из ORM:

persona = Persona.objects.filter(ci="12345678901")  # Esto si retorna un QuerySet
persona.exists()  # Devuelve True si hay elementos en el resultado False de lo contrario
1
ответ дан 24.11.2019, 13:47
  • 1
    Большое спасибо из-за помощи, я реализую оба примера на практике и печатать и # 233; результат – Andro 22.07.2016, 00:13

Ты можешь использовать закладку, которая называется get_object_or_404 что функционирует очень хорошо, документация.

0
ответ дан 24.11.2019, 13:47

классик состоит в том, чтобы использовать метод count() коктейль с filter():

Persona.objects.filter(ci="12345678901").count() > 0

ORM обычно переводит это в решении, которое включает один SELECT count(ci) FROM ... что работоспособнее во время выполнения консультации.

0
ответ дан 24.11.2019, 13:47

Ты можешь использовать следующую линию.

persona = Persona.objects.filter(ci="12345678901").first()

В случае, если не найдет объект с этим тогда ci devolverГЎ None

0
ответ дан 24.11.2019, 13:47

TambiГ©n ты можешь делать простого if из следующего способа:

if persona:
    print("no esta vacio")
else:
    print("vacio")
    persona=none
-1
ответ дан 24.11.2019, 13:47