2017-08-06 16 views
0

我擴展了用戶模型,因此我創建了暱稱。我擴展了用戶模型,我不知道如何通過表單從其他用戶獲得它的價值

暱稱出現在管理頁面上,但我無法通過表單從其他用戶那裏獲得它的價值。

當我在填寫暱稱charfield後點擊我的註冊頁面的提交按鈕時,該值沒有保存。

#models.py 
from django.db import models 
from django.conf import settings 
from django.contrib.auth.models import User 

class Profile(models.Model): 
    class Meta: 
     verbose_name = u'profile' 
     verbose_name_plural = u'profile' 
    user = models.OneToOneField(settings.AUTH_USER_MODEL) 
    nick = models.CharField(verbose_name=u'nickname', max_length=50, blank=True,) 

我認爲它運作良好。

#forms.py 
from django.contrib.auth.models import User 
from django.contrib.auth.forms import UserCreationForm 
from django import forms 
from .models import Profile 

class CreateUserForm(UserCreationForm): 
    email = forms.EmailField(required=True) 
    nick = forms.CharField(required=True) 

    class Meta: 
     model = User 
     fields = ("username", "email", "nick", "password1", "password2") 

    def save(self, commit=True): 
     user = super(CreateUserForm, self).save(commit=False) 
     user.email = self.cleaned_data["email"] 
     user.nick = self.cleaned_data["nick"] 
     if commit: 
      user.save() 
     return user 

但我覺得有什麼不妥forms.py

<!--signup.html--> 
{% extends 'moc/base.html' %} 
{% block content %} 

<form method="post" action="{% url 'signup' %}"> 
{% csrf_token %} 
{{ form.as_p }} 
<button type="submit">submit</button> 
</form> 

{% endblock %} 
+0

您是否收到任何錯誤? –

回答

0

尼克領域是型材,而不是用戶。您需要與用戶一起創建相關的實例。

user = super(CreateUserForm, self).save(commit=False) 
    user.email = self.cleaned_data["email"] 
    profile = Profile(user=user) 
    profile.nick = self.cleaned_data["nick"] 
    if commit: 
     user.save() 
     profile.save() 
相關問題