django表单保存中的完整性错误

django表单保存中的完整性错误,django,django-models,django-forms,Django,Django Models,Django Forms,嘿,伙计们,我的模特是这样的: 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.I

嘿,伙计们,我的模特是这样的:

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

为什么我会犯这个错误?为什么它不像其他表那样自动执行

您的问题在于:

 rl_frm = form.save(commit=False)
 rl_frm.save()
由于您的
外键中没有
null=True
,因此需要有效的外键;你还没有通过这里

因此,您应该将
ForeignKey
设置为
null=True
,然后可能会分配它:

 r1_frm.priority.pk = 1 # some primary key to a valid Priority object
 r1_frm.save()

你的问题在于:

 rl_frm = form.save(commit=False)
 rl_frm.save()
由于您的
外键中没有
null=True
,因此需要有效的外键;你还没有通过这里

因此,您应该将
ForeignKey
设置为
null=True
,然后可能会分配它:

 r1_frm.priority.pk = 1 # some primary key to a valid Priority object
 r1_frm.save()

表单中的数据是否为提交的“规则”指定了“优先级”对象?如果不是,并且您不希望Django强制这样做,您应该在
规则.priority
字段中添加“null=True”。表单中的数据是否为提交的“规则”指定了“priority”对象?如果不是,并且您不希望Django强制这样做,您应该在
规则.priority
字段中添加“null=True”。