加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 13:52:35 所属栏目:Python 来源:网络整理
导读:假设有两种模型:作者和书. 果然Book有一个作者的外键. 有一个创建视图,用户在其中提供作者的姓名,并上传包含其书籍列表的文件. 所以我想弄清楚创建表单的最佳方法. 现在我有: class AddForm(ModelForm): books = FileField() class Meta: model = Author d
假设有两种模型:作者和书.
果然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]

问题是我应该在哪里实际创建Books模型对象?看起来它应该是一个保存方法,如:

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读