У меня есть несколько объектов Django, таких как:
class Award(Model):
name = CharField(...)
date = DateTimeField(...)
class Book(Model):
name = CharField(...)
award = ForgeinKey(Award, blank=True)
(т.е. каждая книга может иметь или не иметь одну награду)
Я хочу создать форму для добавления / редактирования премий.Предположим, много книг уже создано.Первоначально я создал ModelForm следующим образом:
class AwardForm(ModelForm):
class Meta:
model = Award
, который создал правильную форму со всеми данными, однако не было возможности добавить книги к награде (или пометить эту награду как применимую к книгам, которые былиselected).
Я собирался вручную добавить ModelMultipleChoiceField
к AwardForm (с набором запросов для книг), затем добавить логику в is_valid
, которая будет проверять выбранные книги, и добавить что-тона save
, чтобы пройти через выбранные Книги и установить для этого объекта ключ фальсификации.
Однако, есть ли хороший способ 'django' сделать это автоматически?т.е. просто добавить в форму определенное поле, которое само это сделает?Если бы я изменил Book.award на многозначный ключ Award.books, он, вероятно, сделал бы все это автоматически, но мне нравится внутренняя логика того, чтобы это было подделкой в Книге.