Предположим, что существует две модели: Автор и Книга. Уверенный достаточно Книга имеет внешний ключ к Автор. Существует представление вида, в котором пользователь дает имя автора и загружает файл со списком книг, которые он имеет.Создание объектов связанных с Propper объектов в модели Django
Итак, я пытаюсь найти лучший способ создать форму. Прямо сейчас у меня есть:
class AddForm(ModelForm):
books = FileField()
class Meta:
model = Author
def clean_books(self):
return [book.strip() for book in self.cleaned_data['books'].file]
Проблема заключается в том, где я должен поставить фактическое создание Книги модельных объектов? Похоже, это должно быть в методе save
, что-то вроде:
def save(self, commit=True):
author = super().save(commit=True)
Book.objects.bulk_create([Book(author=author, title=book.title, ...) for book in self.cleaned_data['books']])
return author
Но это нормально? Меня действительно раздражает аргумент commit
. Это полностью игнорируется, и это может путать других, если они поставляют commit=False
. Как я могу принять во внимание аргумент commit и не нарушать логику?
К сожалению, я не понимаю, как использовать его в моем конкретном примере. Можете ли вы привести пример, учитывая, что я использую CreateView CBV? – Glueon