Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django inlineformset被忽略的额外行_Django_Lines_Formset_Extra - Fatal编程技术网

Django inlineformset被忽略的额外行

Django inlineformset被忽略的额外行,django,lines,formset,extra,Django,Lines,Formset,Extra,我试图在我的表格中添加额外的行,但它似乎被忽略了。我有一个类似的设置,但没有基本模型。我曾尝试实施该解决方案,但没有成功。有人有办法在我的表单中添加额外的行吗 这是我的密码: 型号.py class Disease(models.Model): disease = models.CharField(max_length=300, verbose_name="disease") def __unicode__(self): return self.disease

我试图在我的表格中添加额外的行,但它似乎被忽略了。我有一个类似的设置,但没有基本模型。我曾尝试实施该解决方案,但没有成功。有人有办法在我的表单中添加额外的行吗

这是我的密码:

型号.py

class Disease(models.Model):
    disease = models.CharField(max_length=300, verbose_name="disease")

    def __unicode__(self):
      return self.disease


class Indicator(models.Model):
    relevantdisease = models.ForeignKey(Disease, verbose_name="disease")       
    indicator = models.CharField(max_length=300, verbose_name="indicators")

    def __unicode__(self):
      return self.indicator
MAX_INDICATORS = 3

class DiseaseForm(forms.ModelForm):
    class Meta:
       model = Disease

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

DiseaseFormSet = inlineformset_factory(Disease, 
    Indicator,
    can_delete=False,
    extra=MAX_INDICATORS,
    form=DiseaseForm)

IndicatorFormSet = inlineformset_factory(Indicator,
    IndicatorValue,
    can_delete=False,
    extra=MAX_INDICATORS,
    form=IndicatorForm)
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(reverse(something))

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

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

class Disease(models.Model):
    disease = models.CharField(max_length=300, verbose_name="disease")

    def __unicode__(self):
      return self.disease


class Indicator(models.Model):
    relevantdisease = models.ForeignKey(Disease, verbose_name="disease")       
    indicator = models.CharField(max_length=300, verbose_name="indicators")

    def __unicode__(self):
      return self.indicator
MAX_INDICATORS = 3

class DiseaseForm(forms.ModelForm):
    class Meta:
       model = Disease

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

DiseaseFormSet = inlineformset_factory(Disease, 
    Indicator,
    can_delete=False,
    extra=MAX_INDICATORS,
    form=DiseaseForm)

IndicatorFormSet = inlineformset_factory(Indicator,
    IndicatorValue,
    can_delete=False,
    extra=MAX_INDICATORS,
    form=IndicatorForm)
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(reverse(something))

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

return render_to_response("something.html", {'indicatorForm': indicatorForm, 'diseaseInlineFormSet': diseaseInlineFormSet},context_instance=RequestContext(request))  
视图.py

class Disease(models.Model):
    disease = models.CharField(max_length=300, verbose_name="disease")

    def __unicode__(self):
      return self.disease


class Indicator(models.Model):
    relevantdisease = models.ForeignKey(Disease, verbose_name="disease")       
    indicator = models.CharField(max_length=300, verbose_name="indicators")

    def __unicode__(self):
      return self.indicator
MAX_INDICATORS = 3

class DiseaseForm(forms.ModelForm):
    class Meta:
       model = Disease

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

DiseaseFormSet = inlineformset_factory(Disease, 
    Indicator,
    can_delete=False,
    extra=MAX_INDICATORS,
    form=DiseaseForm)

IndicatorFormSet = inlineformset_factory(Indicator,
    IndicatorValue,
    can_delete=False,
    extra=MAX_INDICATORS,
    form=IndicatorForm)
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(reverse(something))

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

return render_to_response("something.html", {'indicatorForm': indicatorForm, 'diseaseInlineFormSet': diseaseInlineFormSet},context_instance=RequestContext(request))  
更新代码: 现在,1种疾病将与多个指标相关联,我可以得到额外的线。然而,现在的问题是,每当我保存我的指标并从数据库中选择一种疾病时,一种新的疾病就会写入链接到指标的数据库

Views.py

def drui(request):
if request.method == "POST":

   diseaseForm  = DiseaseForm(request.POST)

   if diseaseForm.is_valid():
      new_disease = diseaseForm.save(commit=False)
      indicatorInlineFormSet = IndicatorFormSet(request.POST, instance=new_disease)

      if indicatorInlineFormSet.is_valid():
         new_disease.save()
         indicatorInlineFormSet.save()
         return HttpResponseRedirect(reverse(valdrui))

else:
   diseaseForm = DiseaseForm()
   indicatorInlineFormSet = IndicatorFormSet(instance=Disease())

return render_to_response("drui.html", {'diseaseForm': diseaseForm, 'indicatorInlineFormSet': indicatorInlineFormSet},context_instance=RequestContext(request)) 
forms.py

class DiseaseForm(forms.ModelForm):
    disease = forms.ModelChoiceField(queryset=Disease.objects.all())
    class Meta:
       model = Disease

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

IndicatorFormSet = inlineformset_factory(Disease, 
    Indicator,
    can_delete=False,
    extra=MAX_INDICATORS)
HTML:


在您的视图中,对于单个
指标
实例,您有一个
指标表单
,以及一个
疾病表单集
,用于将多个
疾病
实例绑定到该单个
指标
。然而,在models.py中,您有一个从
指示器到
疾病的
外键
,这意味着
指示器
只能绑定到一个
疾病
实例,而
疾病
实例可以有任意多个
指示器


要解决此问题,请将
外键
指示器
模型更改为
疾病
模型,将
疾病
模型更改为
指示器
模型-或者如果您希望改变此模式,坚持使用您现有的型号,并将
指示灯或MSET
与单个
疾病表一起使用

谢谢你的建议。我选择了后者,并坚持使用模型,以便一种疾病可以有多个指标。然而,出现了一个新的问题,每次提交时都会在数据库表中创建一个新的疾病。我希望能够从数据库中选择与我选择的疾病相关的指标。我以前的解决方案能够做到这一点。嗯,在我看来,你真的希望一个指标有多个疾病,一个疾病有多个指标?使用一个。不管怎样,你能更新你问题中的代码吗?我实际上只想要一种疾病的多个指标(希望这能让事情变得更容易)。我将更新问题中的代码。