Jam*_*uss 1 python django django-forms django-views
我想知道用django模型形式创建模型实例的正确方法是什么时候它包含一个必需的FK?我认为它可能与excludeclass属性有关,但在视图中我尝试在保存之前覆盖它.
模型:
class Profile(models.Model):
client = models.OneToOneField('auth.User')
first_name = models.TextField(blank=True,)
...
Run Code Online (Sandbox Code Playgroud)
形成:
class ProfileForm(floppyforms.ModelForm):
class Meta:
exclude = ('client',)
model = Profile
widgets = {
'first_name': floppyforms.TextInput(attrs={'placeholder': 'First Name'}),
...
Run Code Online (Sandbox Code Playgroud)
视图:
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')
Run Code Online (Sandbox Code Playgroud)
错误:
django.db.models.fields.related.RelatedObjectDoesNotExist: Profile has no client.
Run Code Online (Sandbox Code Playgroud)
干杯
您的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')
Run Code Online (Sandbox Code Playgroud)
您不应将客户端分配给表单,而应分配给内存实例new_profile,然后调用new_profile.save()以保存new_profile到数据库.
| 归档时间: |
|
| 查看次数: |
1133 次 |
| 最近记录: |