在Django模型中创建Propper相关对象

时间:2015-08-25 12:22:58

标签: python django django-forms

假设有两种模式:作者预订。 果然 Book 作者的外键。 有一个创建视图,用户在其中提供作者的姓名,并上传包含其书籍列表的文件。

所以我试图找出创建表单的最佳方法。 现在我有:

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,它可能会混淆其他人。我如何考虑提交参数而不破坏逻辑?

1 个答案:

答案 0 :(得分:1)

看看inline formsets。使用它们,您可以在主窗体中添加一堆内联表单。该formset将为您处理所有数据处理并将Book实例保存到数据库中。它就像django admin中的内联。