Привет, не могу разобраться как сделать форму для моей модели юзера, чтобы я мог изменять отдельные поля, а не сразу все.
Форма:
class ProfileForm(forms.ModelForm):
class Meta:
model = CustomUser
fields = ('avatar', 'firstname', 'lastname',
'date_of_birth',)
widgets = {
'date_of_birth': SelectDateWidget(years=range(1920, 2015)),
}
Вью:
def cabinet(request):
profile = CustomUser.objects.get(pk = request.user.pk)
profile_user = CustomUser.objects.filter(pk = request.user.pk)
form = ProfileForm(request.POST, request.FILES or None, instance=profile)
if request.POST and form.is_valid():
obj = form.save(commit=False)
obj.profile_user = CustomUser.objects.get(pk=request.user.pk)
obj.save()
return redirect(reverse(cabinet))
return render(request, 'cabinet.html',
{'form':form, 'profile_user': profile_user, }, )
Html:
<form action="{% url 'cabinet' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-default" type="submit">Submit</button>
</form>
Я отображаю на странице все поля формы и если хочу изменить только одно поле, в другое запишется пустое значение.
Я вижу только одно решение, создать отдельную форму для каждого поля.
Параметров в форме больше, я их удалил чтобы наглядней было видно, поэтому подход выше кажется рациональным