Reputation: 542
Hey folks I have my model like :
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")
and here is my forms
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")
I am saving this form in my views as follow
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)
But i am getting integrity error i.e
networking_rule.priority_id may not be NULL
why i am getting this error? Why it is not taking automatically like other tables
Upvotes: 1
Views: 2079
Reputation: 174624
Your problem lies here:
rl_frm = form.save(commit=False)
rl_frm.save()
Since you don't have null=True
in your ForeignKey
, a valid foreign key is required; which you have not passed here.
So you should set the ForeignKey
to null=True
, then probably assign it:
r1_frm.priority.pk = 1 # some primary key to a valid Priority object
r1_frm.save()
Upvotes: 1