Я расширил пользовательскую модель Django некоторыми дополнительными полями
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
telephone = models.CharField(max_length=15, blank=True)
date_of_birth = models.DateField(null=True, blank=True)
forms.py
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email')
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ('telephone', 'date_of_birth')
widgets = {
'date_of_birth': forms.DateInput(attrs={'type': 'date'}),
}
user_update. html
<form action="/user-updated/{{ user.pk }}/" method="post">
{% csrf_token %}
<table>
<tr><td>User:</td><td>{{ user.username }}</td></tr>
<tr><td>First Name:</td><td>{{ user_form.first_name }}</td></tr>
<tr><td>Last Name:</td><td>{{ user_form.last_name }}</td></tr>
<tr><td>Email:</td><td>{{ user_form.email }}</td></tr>
<tr><td>Telephone:</td><td>{{ profile_form.telephone }}</td></tr>
<tr><td>Date of birth:</td><td>{{ profile_form.date_of_birth }}</td></tr>
</table>
<input type="submit" value="Submit" />
</form>
views.py
form(request, user_pk):
user = User.objects.get(pk=user_pk)
if request.method == 'POST':
user_form = UserForm(request.POST, instance=request.user)
profile_form = ProfileForm(request.POST, instance=request.user.profile)
print(profile_form.errors)
if user_form.is_valid() and profile_form.is_valid():
profile, created = Profile.objects.get_or_create(user=request.user)
user_form.save()
profile_form.save()
messages.success(request, ('Your profile was successfully updated!'))
date_of_birth = profile_form.cleaned_data['date_of_birth']
user = profile_form.cleaned_data['user']
context = {'user': user,}
template = loader.get_template('user_updated.html')
return HttpResponse(template.render(context, request))
else:
messages.error(request, ('Please correct the error below.'))
else:
user_form = UserForm()
profile_form = ProfileForm()
context = {'user': user,
'user_form': user_form,
'profile_form': profile_form
}
return render(request, 'user_details.html', context)
После отправки profile_form выдает ошибку в views.py:
<ul class="errorlist"><li>user<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
Форма выглядит следующим образом
Может кто-нибудь подсказать, как я может исправить это?