【发布时间】:2015-08-25 12:22:57
【问题描述】:
假设有两个模型:Author 和 Book。 果然Book有一个Author的外键。 有一个创建视图,用户在该视图中给出作者的姓名并上传包含其拥有的书籍列表的文件。
所以我试图找出创建表单的最佳方法。 现在我有:
class AddForm(ModelForm):
books = FileField()
class Meta:
model = Author
def clean_books(self):
return [book.strip() for book in self.cleaned_data['books'].file]
问题是我应该把 Books 模型对象的实际创建放在哪里?看起来它应该在 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,它可能会混淆其他人。如何考虑提交参数而不破坏逻辑?
【问题讨论】:
标签: python django django-forms