如何在Django模型表单中保存外键

Sharath Nayak

我有两个模型,一个表单和一个表单集,所以Formsets包含表单的外部表单,我想在保存表单和表单集时将添加id保存到表单集。

模型

class fmodel(models.Model):
   name=models.TextField(blank=True,null=True)

class smodel(models.Model):
   desc=models.TextField(blank=True,null=True)
   n=models.ForeignKey(fmodel,null=True,blank=True,related_name='somemodel')

表格

class fmodelForm(forms.ModelForm):
   name=forms.CharField(max_length=200,widget=forms.TextInput(attrs={'class': 'form-control'}))
    class Meta:
         model=fmodel
         fields=['name']

smodelFormset=modelformset_factory(
  smodel,
  fields=('desc',),
  extra=1,
  widgets={
      'desc':forms.TextInput(attrs={'class': 'u-form'})
  }
) 

模板

<div>
   <form role="form" action="//" enctype='multipart/form-data' method="post" id="form_sample_2" class="form-horizontal" novalidate="">{% csrf_token %}
     <div class="row">
          <div class="col-md-6" style="margin-bottom: 30px;">
                <label> name : </label>
                  {{form.name}}
          </div>
           <div class="col-md-6" style="margin-bottom: 30px;">
                 {{ form1.management_form }}
                 {% for f in form1 %}
                <label> desc : </label>
                  {{f.desc}}
                 {% endfor %}
          </div>
     </div>
     <input type="submit" value="Save" />
   </form>
</div>

views.py

form=fmodelForm(request.POST or None)
formset = smodelFormset(request.POST or None)
if form.is_valid():
   form.save()
if formset.is_valid():
   forms=formset.save(commit=False)
   for f in forms:
    #here I want to add id of previously added form
    f.save()
威廉·范昂塞姆

Aform.save()返回它已保存的实例。然后,我们可以遍历形式,每种形式,设定.foreign_keyf.instance到该实例:

if form.is_valid() and formset.is_valid():
    instance = form.save()
    instances = formset.save(commit=False)
    for obj in instances:
        obj.foreign_key = instance
        obj.save()

您可能首先要同时验证formformset由于如果两者之一是无效的。最好根本不保存任何数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试在 Django 中保存模型表单时,为什么会出现“外键不匹配”?

如何将外键为 User 的模型表单保存到 Django 模型中

如何在Django中保存模型记录

Django:如何在Django Rest API类基本视图中保存外键对象

如何在 django rest 框架中保存一个对 User 有外键的实体?

Django外键表单保存

如何在视图中的模型中保存表单字段

Django通过模型形式和外键在模型中保存数据

如何在管理表单中显示模型的外键字段

如何在Django中模拟模型的外键模型?

通过其他字段的值在django模型中保存外键

如何以Django模型形式保存外键文本输入

如何在 Django 中保存没有提交按钮的表单

如何在 Django 模型中保存()一个参数

如何在一个Django表单工具WizardView中保存具有多个modelForms的多个模型

如何在DJango中使用不同模型的外键

如何在Django模型外键上添加条件?

在Django中用外键保存模型

如何在同一模型的同一Django视图中保存多个表单?当前,最后一个表格覆盖了保存

在admin中保存新模型时,对表“ django_admin_log”的插入或更新违反了外键约束

如何在 PyTorch 中保存模型?

如何在联邦的Tensorflow中保存模型

如何在PyTorch中保存模型架构?

使用python-django在PostgreSQL中保存外键

在 Django 中保存表单

保存具有外键的Django模型时,如何一次全部保存?

在 Django 中保存表单集返回无模型

(Laravel) 如何在模型中关联外键的外键

Django(模型):如何从外键获取实例