I have a model Book with a foreign key to model Publisher.
class Publisher(models.Model):
...
class Book(models.Model):
publisher = models.ForeignKey(Publisher)
...
Is it possible to get one publisher with its all books (or with some condition)? So the values of the queryset may like below:
publishers = Publisher.objects.filter(name__isstartwith='publisher')
publishers_dict = publishers.values()
[{
"id": 1,
"name": "publisher_a",
"books":[
{
"id": 1,
"name": "book_name_1"
},
{
"id": 2,
"name": "book_name_2"
},
]
}]
This seems a combination of two querysets in How to combine 2 or more querysets in a Django view, but they are not quite the same. And there is a way to combine them after get the list of the query:
publishers = Publisher.objects.filter(name__isstartwith='publisher')
publishers = list(publishers)
# then filter the publishers to get all books from is
for pub in publishers:
books = Books.objects.filter(publish=pub["id"])
books = list(books)
setattr(pub, "books", books)
But is it possible to use a QuerySet without iterating the publishers?