django 一个表格多个表格
Posted
技术标签:
【中文标题】django 一个表格多个表格【英文标题】:django one form multiple tables 【发布时间】:2011-08-07 03:38:14 【问题描述】:一个表格收集名字、电子邮件、密码和成绩。
我可以使用类似的方法将此信息保存在两个表中吗?
def save(self):
new_user = User.objects.create_user(first=self.cleaned_data['first'], email=self.cleaned_data['email'], password=self.cleaned_data['password'])
new_grade = Grade.objects.create_grade(grade=self.cleaned_data['grade'])
return new_user, new_grade
这可能吗?有什么更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:做这样的事绝对有可能,也很正常。表单不必仅仅因为 ModelForms 就必须类似于模型。表单只是描述特定用例所需输入的一种方式。您如何处理这些数据完全取决于您。这包括在许多不同的模型中保存它。
请注意,您不必以常规形式返回您创建的新实例。这只是惯例。如果您需要在保存后访问新实例,那么一定要返回它们。
【讨论】:
【参考方案2】:最好像这样编码:
if new_user:
## create other tables..
【讨论】:
我不确定我是否完全关注你...你能详细说明一下吗? 您这样做的方式是正确的,但您可以对代码有更多控制权,例如将new_user
实例放入 if
语句中以确保用户创建然后创建与您的模型关联的其他实例,当然在你的情况下你不必像我一样编码,但如果grade
关联user
你必须确保user
先创建然后创建等级..,我希望声明清楚。
还要确保使用事务原子,如果在创建父对象时在创建子对象时出现一些错误,则回滚查询。以上是关于django 一个表格多个表格的主要内容,如果未能解决你的问题,请参考以下文章