我知道这在 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 才是保存实例而不引发异常的关键语句。感谢所有帮助过的人!!
Cheers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)