Получилось вот так:
views.py:
def cabinet_edit(request, user_id):
user = request.user
profile = get_object_or_404(Profile, user_id=user_id)
form = forms.ProfileForm(request.POST or None, instance=profile)
context = { 'profile': profile, 'form': form, }
if request.method == 'POST' and form.is_valid():
form.save(request.user)
return redirect(user_id=user.id)
return render(request, 'cabinet_edit.html', context)
Но проблема в том, что у меня поле phone_number имеет виджет, по разделению поля на две части
forms.py:
class PhoneWidget(MultiWidget):
def __init__(self, code_length=3, num_length=7, attrs = None):
widgets = [TextInput(attrs={'size': code_length, 'max_length': 3}),
TextInput(attrs={'size': num_length, 'max_length': num_length})]
super(PhoneWidget, self).__init__(widgets, attrs)
def decompress(self, value):
if value:
return [value.code, value.number]
else:
return ['', '']
def format_output(self, rendered_widgets):
return '(' + rendered_widgets[0] + ') - ' + rendered_widgets[1]
class PhoneField(MultiValueField):
def __init__(self, code_length=3, num_length=7, *args, **kwargs):
list_fields = [CharField(max_length=3),
CharField(max_length=7)]
super(PhoneField, self).__init__(list_fields, widget=PhoneWidget(code_length, num_length), *args, **kwargs)
def compress(self, values):
return values[0] + values[1]
В связи с чем появляется ошибка
AttributeError at /cabinet/edit/1/
'str' object has no attribute 'code'
Как решить проблему?