2016-05-05 5 views
0

プロファイルを編集しようとしていますが、デフォルトの入力値を現在のユーザーデータにします。たとえば、usernameフィールドのデフォルト値は私の現在のユーザー名です。だから私は、モデルのフォームを作って、私はこれをしようと試み:DjangoはModelFormの属性としてユーザーを認識しません

from __future__ import unicode_literals 

from django import forms 
from django.forms import ModelForm, Textarea 
from django.db import models 
from django.contrib.auth.models import User 

class User_Edit(forms.ModelForm): 
    class Meta: 
     model = User 
     fields = ['username', 'email'] 
     widgets = { 
      'username': Textarea(attrs={'value': model.username }) 
     } 

しかし、Djangoは言う:はAttributeError:タイプオブジェクトのユーザー 'には属性「ユーザ名」

はまた、これは完全なトレースバックされていない:

Traceback (most recent call last): 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper 
fn(*args, **kwargs) 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run 
autoreload.raise_last_exception() 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception 
six.reraise(*_exception) 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper 
fn(*args, **kwargs) 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup 
apps.populate(settings.INSTALLED_APPS) 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate 
app_config.import_models(all_models) 
File "/home/sebastian/Spartan/local/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models 
self.models_module = import_module(models_module_name) 
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
__import__(name) 
File "/home/sebastian/Documents/project-spartan/profiles/models.py", line 8, in <module> 
class User_Edit(forms.ModelForm): 
File "/home/sebastian/Documents/project-spartan/profiles/models.py", line 9, in User_Edit 
class Meta: 
File "/home/sebastian/Documents/project-spartan/profiles/models.py", line 13, in Meta 
'username': Textarea(attrs={'value': model.username }) 

AttributeError:型オブジェクト 'User'に属性 'username'がありません

+1

まあ、_class_ 'User'には' username'属性がありません。とにかく明示的な値を追加する必要があるのはなぜですか?それはmodelformによって処理されるべきです。 – knbk

+0

どういう意味ですか?あなたは私に例を挙げることができますか? –

答えて

1

基本的に、Metaクラスの各フィールドの値を設定しないでください。あなたのビューで、あなたが持っていると思いますので、あなたは、あなたが探しているユーザーを表すフォームfrom an objectを初期化することができます

#Whatever happens in your view function before you create the form 

user_obj = User.objects.get(username = target_username, 
    email=target_email) #Or how ever else you want to get the user in question 
form = User_EditForm(instance = user_obj) 

#Rest of your view 

をあなたの人生を容易にするために、あなたは、代わりにUpdateViewを使用して依存で見たいと思うかもしれませんあなたの正確なユースケース

関連する問題