Django, проверьте, присутствует ли объект в наборе запроса, используя метод exists () - PullRequest
0 голосов
/ 19 июня 2020

У меня есть модель ниже,

class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    head = models.CharField(max_length=255)
    authors = models.ManyToManyField(Author)

Я создал объект в модели Entry, когда я пытаюсь проверить, есть ли какие-либо объекты в модели Entry, он показывает ошибку как прикрепленное изображение

enter image description here

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Если вам нужен объект, вы можете сделать:

entry = Entry.objects.filter(pk=1).first()
if entry:
    # …
else:
    # …

Метод .first() возвращает None, если набор запросов пуст.

2 голосов
/ 19 июня 2020

Это Entry.objects.filter(pk=1).exists(), поскольку .get() в данном случае не QuerySet, а Entry объект. Итак, вы проверяете:

if Entry.objects.<b>filter(pk=1)</b>.exists():
    # &hellip;
else:
    # &hellip;

Однако здесь, вероятно, проще работать с предложением try - except и, таким образом, работать в стиле EAFP [wiki] :

try:
    entry = Entry.objects<b>.get(pk=1)</b>
    print('k')
except <b>Entry.DoesNotExists</b>:
    print('false')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...