1

やあ皆さん、私は私のモデルを次のように持っています:

class Rule(models.Model):
    Ruleinfo = models.CharField(max_length=5,null=False)
    Ispname  = models.CharField(max_length=5,null=False)
    priority = models.ForeignKey('Priority',related_name ="priority1")
    From  =    models.IPAddressField(null=True)
    To = models.IPAddressField(null=True)
    def __unicode__(self):
        return u'%s %s %s %s %s %s %s %d' % (self.Ruleinfo, self.Ispname, self.priority,
                                      self.From, self.To)


class Priority(models.Model):  
    priority =  models.IntegerField(null = True)
    ispname = models.ForeignKey('Rule' ,related_name="ispname1")
    rule = models.ForeignKey('Rule',related_name="rule1")

ここに私のフォームがあります

class RuleInfoForm(ModelForm):
     Ruleinfo = forms.CharField(max_length=5)   
     Ispname  = forms.CharField(max_length=5)
     priority = forms.IntegerField()
     From  =       forms.IPAddressField()   
     To    =       forms.IPAddressField()
     class Meta:
        model = Rule
        fields = ("Ruleinfo","Ispname","priority","From","To") 

このフォームを次のようにビューに保存しています

def multiwanrule_info(request):
    data = {}
    try:
       form = RuleInfoForm(request.POST)
    except:
        pass
    if form.is_valid():
        rl_frm = form.save(commit=False)
        rl_frm.save()
    else:

        form = RuleInfoForm() 
        data['form'] = form    
    return render_to_response('networking.html',data)

しかし、私は整合性エラーが発生しています

networking_rule.priority_id may not be NULL

なぜこのエラーが発生するのですか? 他のテーブルのように自動的に取得されない理由

4

1 に答える 1

1

あなたの問題はここにあります:

 rl_frm = form.save(commit=False)
 rl_frm.save()

にないためnull=TrueForeignKey有効な外部キーが必要です。あなたがここで通過していないもの。

したがって、 を に設定してForeignKeyからnull=True、おそらく次のように割り当てます。

 r1_frm.priority.pk = 1 # some primary key to a valid Priority object
 r1_frm.save()
于 2012-05-30T16:36:41.223 に答える