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”。