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