Django как добавить модель внешнего ключа результатов запроса в queryset
Как я могу получить объекты модели Author в кверисет через внешний ключ модели B? Я хотел бы использовать объекты Author в моем шаблоне.
#Models.py
class Book(models.Model):
name = models.CharField(max_length=5)
class Author(models.Model):
# lots of fields
class B(models.Model):
author = models.ForeignKey(Author)
book = models.ForeignKey(Book)
selected_book = "ABC"
book = Book.objects.get(name=selected_book)
original_queryset = B.objects.filter(name=book)
for i in original_queryset:
print(i.author) # returns what i want
queryset = # get all i.author objects somehow
return render(request,"template.html", {"queryset": queryset}
Удалите цикл for. Затем добавьте следующую строку после строки original_queryset = B.objects.filter(name=book)->
queryset = B.author
Если это не сработает, дайте мне знать. Надеюсь, я смогу вам помочь.
Вы можете переименовать поле B модели author в поле authors, что сделает ваш код более осмысленным, потому что поле ForeignKey может хранить много данных. В вашем коде вы сделали поле B модели author как поле ForeignKey, что означает, что books может иметь несколько авторов. Вы можете посмотреть документацию django по ссылке ForeignKey.
Если вы измените так, как я вам сказал, то не забудьте запустить migration (python manage.py makemigrations и python manage.py migrate в вашей команде cmd) и изменить строку queryset = B.author на queryset = B.authors