2011-12-17 7 views
0

登録とログインの目的でdjango-registrationを使用しています。私のModelsForms.pyは正常に動作しています。現在ログインしているユーザーのIDを取得したい(django-registrationを使用)

MALE = 1 
FEMALE = 2 
SEX_CHOICES = (
    (MALE,'Male'), 
    (FEMALE,'Female'), 
) 

class UserProfile(models.Model): 
    #user = models.IntegerField() # update : Changed to ForeignKey. 
    user = models.ForeignKey(User) 
    gender = models.IntegerField(choices = SEX_CHOICES,null=True, blank=True) 
    zip_code = models.CharField(max_length=100,null=True, blank=True) 
    language = models.ManyToManyField(Category) 

マイModelForm

class UserProfileForm(forms.ModelForm): 
    class Meta: 
     model = UserProfile 
     widgets = {'language': forms.CheckboxSelectMultiple} 

アップデート2:

def some_view(request): 
if request.method == 'POST': 
    form = UserProfileForm(request.POST) 
    if form.is_valid(): 

     form.save() 
else: 
    form = UserProfileForm() 
:ここに私の viewある問題が Model以下、現在ログオンしているユーザーの iduser分野では、私が保存したいです

更新:テンプレートに{{ user.id }}を使用して現在ログインしているユーザーを取得できます。しかし今、どうすればiduser fieldに渡すのですか?

+0

さて、あなたは[django.http.HttpRequest](https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.user)のインスタンスを介して現在のユーザーにアクセスできます。 )クラス(通常、標準の関数ビューの 'request'という名前の引数、またはクラスベースのビューの' self.request'属性にあります)で利用可能です。 –

答えて

2

あなたは現在ログに記録されているuserrequest.userでアクセスできます。

にこのユーザーにinitialデータをお使いのForm

@login_required 
def my_view(request): 
    logged_user = request.user 
    initial = {'user': logged_user} 
    form = MyForm(request.POST or None, initial=initial) 
    # Here your logical code 
    # ... 
    return HttpResponse(...) 

をそして、あなたが使用している場合ModelForm

@login_required 
def my_view(request): 
    logged_user = request.user 
    form = MyUserProfileModelForm(
       request.POST or None,\ 
       instance=logged_user.get_profile()) 
    # Here your logical code 
    # ... 
    return HttpResponse(...) 

注:get_profile()OneToOneFieldであり、あなたのデータベース場合DoesNotExist例外を発生させることが(あなたがここで別のものを試した場合に起こるかもしれません)。

+0

それは働いた。しかし、私はフォームを編集する場合、このコードは新しい行をテーブルに挿入します。 – Kulbir

+0

'MyForm(instance = request.user.get_profile()'、data = request.POSTまたはNone) ' – sdolan

+0

@sdolan thanksもう一つの問題 'プロジェクト設定でAUTH_PROFILE_MODULEを設定する必要があります' – Kulbir

関連する問題