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

Вернуться на верх