微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html – Django’ManagementForm数据丢失或已经被篡改’当使用外键链接保存modelForms

我对Django很新,所以这可能是一个容易的问题.我有两个modelForms,其中有一个ForeignKey到另一个.我的主要目标是将指标与疾病(FK)联系起来,使得对于特定的疾病,您可以有多个指标.

使用下面的代码,当我点击提交“管理窗体数据丢失或被篡改”时,我收到错误.此外,views.py中的代码似乎没有在第三个’if’语句中返回HttpResponseRedirect的验证.但是,当我检查我的数据库时,表单中的值已写入.任何关于为什么错误提出的想法?以及如何解决

我的代码如下:

models.py

#Table for disease
class disease(models.Model):
    disease = models.CharField(max_length=300)

#Tables for Indicators
class Indicator(models.Model):
    relevantdisease = models.ForeignKey(disease)       
    indicator = models.CharField(max_length=300)

forms.py

class diseaseForm(forms.ModelForm):
    class Meta:
      model = disease

class IndicatorForm(forms.ModelForm):
    class Meta:
      model = Indicator

diseaseFormSet = inlineformset_factory(disease,Indicator,can_delete=False,form=diseaseForm)

views.py

def drui(request):

    if request.method == "POST":

       indicatorForm  = IndicatorForm(request.POST)

       if indicatorForm.is_valid():
          new_indicator = indicatorForm.save()
          diseaseInlineFormSet = diseaseFormSet(request.POST,request.FILES,instance=new_indicator)

          if diseaseInlineFormSet.is_valid():
             diseaseInlineFormset.save()
             return HttpResponseRedirect('some_url.html')

    else:
       indicatorForm = IndicatorForm()
       diseaseInlineFormSet = diseaseFormSet()

    return render_to_response("drui.html",{'indicatorForm': indicatorForm,'diseaseInlineFormSet': diseaseInlineFormSet},context_instance=RequestContext(request))

template.html

<form class="disease_form" action="{% url drui %}" method="post">{% csrf_token %}
  {{ indicatorForm.as_table }}
 <input type="submit" name="submit" value="Submit" class="button">
 </form>

解决方法

您的模板中既没有diseaseFormSet也没有formFormSet的管理表单,但是您尝试实例化表单集. Formsets需要隐藏的管理表单,告诉django集合中有多少个表单.

将其插入到HTML中

{{ diseaseFormSet.as_table }} 
{{ diseaseFormSet.management_form }}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐