[英]Django ModelForm - Create instance with foreign key
我想知道當它包含所需的 FK 時,使用 django 模型表單創建模型實例的正確方法是什么? 我認為這可能與exclude
類屬性有關,但在視圖中我試圖在保存之前覆蓋它。
模型:
class Profile(models.Model):
client = models.OneToOneField('auth.User')
first_name = models.TextField(blank=True,)
...
形式:
class ProfileForm(floppyforms.ModelForm):
class Meta:
exclude = ('client',)
model = Profile
widgets = {
'first_name': floppyforms.TextInput(attrs={'placeholder': 'First Name'}),
...
看法:
def post(self, request):
form = ProfileForm(request.POST)
if form.is_valid():
form.save(commit=False)
form.client = User.objects.create(username=request.POST['email'],)
form.save()
return redirect('/success')
return redirect('/error')
錯誤:
django.db.models.fields.related.RelatedObjectDoesNotExist: Profile has no client.
干杯
您的 views.py 中有錯誤。 它應該是:
def post(self, request):
form = ProfileForm(request.POST)
if form.is_valid():
new_profile = form.save(commit=False)
new_profile.client = User.objects.create(username=request.POST['email'],)
new_profile.save()
return redirect('/success')
return redirect('/error')
您不應該將客戶端分配給您的表單,而是分配給內存中的實例new_profile
,然后調用new_profile.save()
將new_profile
保存到數據庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.