【问题标题】:django one form multiple tablesdjango 一个表格多个表格
【发布时间】: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

这可能吗?有什么更好的方法来做到这一点?

【问题讨论】:

    标签: python django forms django-models django-forms


    【解决方案1】:

    做这样的事绝对有可能,也很正常。表单不必仅仅因为 ModelForms 就必须类似于模型。表单只是描述特定用例所需输入的一种方式。您如何处理这些数据完全取决于您。这包括在许多不同的模型中保存它。

    请注意,您不必以常规形式返回您创建的新实例。这只是惯例。如果您需要在保存后访问新实例,那么一定要返回它们。

    【讨论】:

      【解决方案2】:

      最好像这样编码:

      if new_user:
          ## create other tables..
      

      【讨论】:

      • 我不确定我是否完全关注你...你能详细说明一下吗?
      • 您这样做的方式是正确的,但您可以对代码有更多控制权,例如将 new_user 实例放入 if 语句中以确保用户创建然后创建与您的模型关联的其他实例,当然在你的情况下你不必像我一样编码,但如果grade关联user你必须确保user先创建然后创建等级..,我希望声明清楚。
      • 还要确保使用事务原子,如果在创建父对象时在创建子对象时出现一些错误,则回滚查询。
      猜你喜欢
      • 2016-10-25
      • 1970-01-01
      • 2017-11-23
      • 2014-08-24
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多