Я написал модель для пользовательских пользователей и просмотров, которые позволяют мне добавлять новых пользователей, просматривать их информацию о профиле и логин/выход. Однако при написании представления для моих пользователей, чтобы обновить их информацию о профиле, я обнаружил, что отображаемая форма требует, чтобы пользователь снова заполнил все свои данные, даже если они не хотели изменять эту конкретную деталь. Например, если пользователь хотел просто изменить свою фамилию, им придется снова и снова вводить свой адрес электронной почты, пароль, имя и т. Д. Есть ли способ для меня, чтобы эта форма была заполнена автоматически, и пользователь может просто изменить то, что им нужно? Приведенные ниже формы и виды представлений. Любая помощь очень ценится!Создание формы изменения формы Django Autofill
views.py
@login_required(login_url='/login/')
def personal(request):
"""
Personal data of the user profile
"""
profile = MyUser.get_full_name #This returns the email address
if request.method == "POST":
form = ProfileForm(request.POST, instance=profile)
if form.is_valid():
form.save()
messages.add_message(request, messages.INFO, _("Your profile information has been updated successfully."))
else:
form = ProfileForm
template = "update_profile.html"
data = { 'section': 'personal', 'form': form, }
return render_to_response(template, data, context_instance=RequestContext(request))
forms.py
class ProfileForm(forms.ModelForm):
"""
Profile Form. Composed by all the Profile model fields.
"""
class Meta:
model = MyUser
exclude = ('is_active', 'is_admin', 'last_login')
Ошибка после внедрения Решение
Environment:
Request Method: GET
Request URL: http://localhost:8000/friends/update/
Django Version: 1.6.5
Python Version: 2.7.7
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'friends')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "D:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
112. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\Python27\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "D:\Uni\_Project\friend_finder_V2\mysite\friends\views.py" in personal
85. form = ProfileForm(instance=profile)
File "D:\Python27\lib\site-packages\django\forms\models.py" in __init__
315. object_data = model_to_dict(instance, opts.fields, opts.exclude)
File "D:\Python27\lib\site-packages\django\forms\models.py" in model_to_dict
124. opts = instance._meta
Exception Type: AttributeError at /friends/update/
Exception Value: 'function' object has no attribute '_meta'
После того как я дал это, я получаю сообщение об ошибке: «Объект« функции »не имеет атрибута« _meta ». Любая идея о решении этого? – MrW
Обновите свое исходное сообщение с полной степенью. Кажется, что django ожидает объект, и вы передаете функцию ... – Serafeim
Теперь обновили проблему, похоже, возникла из строки: profile = MyUser.get_full_name. Я думаю. – MrW