Django, набор запросов для поиска количества в поле manytomany - PullRequest
1 голос
/ 19 июня 2020

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

class Blog(models.Model):
    name = models.CharField(max_length=100)

class Author(models.Model):
    name = models.CharField(max_length=200)

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

Как найти количество авторов?

Допустим, у меня есть объект Entry как Entryobject (Entryobject = Entry.objects.filter(blog__name='a')), я пробовал как показано ниже, но с ошибкой атрибута.

Entryobject.authors.count() # got error here

Также дайте мне знать, как мне запросить список авторов в Entryobject.

1 Ответ

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

Вы можете запросить список авторов следующим образом:

Entryobject = Author.objects.all() or
Entryobject = Author.objects.values_list('name', flat=True)

Относительно flat=True Я хотел бы сослаться на официальный документ . В основном он возвращает Queryset с отдельными значениями, а не с кортежами, например:

>>> Entry.objects.values_list('id').order_by('id')
<QuerySet[(1,), (2,), (3,), ...]>

>>> Entry.objects.values_list('id', flat=True).order_by('id')
<QuerySet [1, 2, 3, ...]>

Также, что касается вашей ошибки, я думаю, что это должен быть верхний регистр B:

Entryobject = Entry.objects.filter(Blog__name='a')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...