![](/img/trans.png)
[英]django foriegn key IntegrityError: myapp_model2.name_id may not be NULL
[英](Django) (Foreign Key Issues) model.person_id May not be NULL
我知道這似乎是Django界的一個過於質疑的問題,但我不敢說我還沒有找到解決方案。
我的模特 -
from djago.... import User
class InfoPersonal(models.Model):
...
person = models.OneToOneField(User)
我已經嘗試覆蓋管理定義中的save_model()並覆蓋表單中的save()但似乎沒有任何效果。
如果您要將數據自動添加到ForeignKey或OneToOneField列中,您將如何執行此操作?
def profile_creation_personal(request):
if request.method == 'POST': # If the form has been submitted...
form = PersonalForm(request.POST) # A form bound to the POST data
# form.person = request.user
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
form.save()
return HttpResponseRedirect('/done') # Redirect after POST
else:
form = PersonalForm() # An unbound form
return render_to_response('info/personal/profile_create.html', { 'form': form,})
class PersonalForm(ModelForm):
#hometown_id = ModelChoiceField(queryset=InfoReferenceCities.objects.all(),empty_label=None)
def save(self, *args, **kwargs):
self.person = request.user
super(PersonalForm, self).save(*args, **kwargs)
class Meta:
model = InfoPersonal
exclude = ('person',)
widgets = {'dateofbirth' : SelectDateWidget()}
我得到了答案! 我感覺很好!
personal = form.save(commit = False)
personal.person = request.user
personal.save()
這與Ignacio所說的非常相似,只有commit = False才是保存實例而不拋出異常的關鍵語句。 謝謝所有幫助過的人!!
干杯
在PersonalForm中,您可以繼承save()函數,因此添加了適當的數據,如下所示:
class PersonalForm(ModelForm):
def save(self, *args, **kwargs):
self.person = request.user
super(PersonalForm, self).save(*args, **kwargs)
class Meta:
model = Personal
看到這個
parent = models.ForeignKey('self', blank=True, null=True, verbose_name=_("parent"))
這個沒問題,但有sqlite的問題,將其更改為postgresql它確定。 (它代表我的代碼,將其更改為您的狀態)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.