【问题标题】:Model form save. Get the saved object模型表格保存。获取保存的对象
【发布时间】:2011-11-17 16:47:37
【问题描述】:

如果我有一个模型表单并将其保存为:

f = FormModel(request.POST)
if f.is_valid():
    f.save()

如何取回刚刚保存的对象?

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    当您保存模型表单时,它会返回已保存的模型实例。所以你所要做的就是将它分配给一个变量:

    f = MyModelForm(request.POST)
    if f.is_valid():
        m = f.save()
    

    除非您要处理更复杂的数据,否则您无需搞乱commit=False 或任何类似的东西。

    【讨论】:

    • 你能更深入地解释一下这个概念吗?
    【解决方案2】:

    如果您知道模型已保存(以便存在适当的实例),您也可以这样做:

    model = form.instance
    

    【讨论】:

      【解决方案3】:

      啊,我才发现这个!

          # Create a form instance with POST data.
      >>> f = AuthorForm(request.POST)
      
      # Create, but don't save the new author instance.
      >>> new_author = f.save(commit=False)
      
      # Modify the author in some way.
      >>> new_author.some_field = 'some_value'
      
      # Save the new instance.
      >>> new_author.save()
      
      # Now, save the many-to-many data for the form.
      >>> f.save_m2m()
      

      【讨论】:

        【解决方案4】:

        @Fabian,用于编辑以前未包含在模型表单中的实例,

        例如,您的模型表单包含姓名、年龄、性别,但在您的模型中还有另一个字段可能是国家/地区,您想自己添加而不是您的用户,因此您显示必填字段,然后使用上述过程添加其余的部分 这在上述问题上对我有用

        If form.is_valid()
            Current_form=form.save()
            My_new_id=Curret_form.id
        

        这打印了我后来保存在另一个模型中的新创建对象的 id

        【讨论】:

          猜你喜欢
          • 2017-06-21
          • 2021-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多