2016-10-02 78 views
0

我試圖擴展默認窗體並刪除Django-allauth註冊表單的標籤。大多數標籤都已成功刪除,但我無法刪除電子郵件字段的標籤。從SIgnUp表格中刪除標籤

forms.py

from django import forms 
from .models import Profile 


class SignupForm(forms.ModelForm): 
    gender = forms.CharField(max_length=1, label='Gender') 
    first_name = forms.CharField(max_length=50, label='First Name') 
    last_name = forms.CharField(max_length=50, label='Last Name') 
    birthday = forms.CharField(max_length=50, label='Birthday') 
    location = forms.CharField(max_length=50, label='Location') 

    def __init__(self, *args, **kwargs): 
     super(SignupForm, self).__init__(*args, **kwargs) 
     self.fields['first_name'].widget.attrs.update({'autofocus': 'autofocus'}) 

     #remove labels for fields 
     for field_name in self.fields: 
      field = self.fields.get(field_name) 
      field.widget.attrs['placeholder'] = field.label 
      field.label ='' 


    class Meta: 
     model = Profile 
     fields = ('first_name', 'last_name', 'gender', 'birthday', 'location') 

    def signup(self, request, user): 
     # Save your user 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     user.save() 

     # Save your profile 
     profile = Profile() 
     profile.user = user 
     profile.birthday = self.cleaned_data['birthday'] 
     profile.location = self.cleaned_data['location'] 
     profile.gender = self.cleaned_data['gender'] 
     profile.save() 

models.py

from django.db import models 
from django.contrib.auth.models import User 


class Profile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') 
    birthday = models.DateField(null=True, blank=True) 
    #first_name = models.CharField(max_length=100) 
    #last_name = models.CharField(max_length=100) 
    location = models.CharField(max_length=100) 
    timestamp = models.DateTimeField(auto_now_add= True, auto_now=False) 
    GENDER_CHOICES = (
     ('m', 'Male'), 
     ('f', 'Female'), 
    ) 
    # gender can take only one of the GENDER_CHOICES options 
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, 
           verbose_name='Gender') 

    def __str__(self): 
     return self.user.first_name 

渲染的註冊表格 enter image description here

回答

0

也許是因爲你忘了添加

email = forms.EmailField(label='Email') 

進入SignupForm字段?

還添加「郵件」到

fields = ('first_name', 'last_name', 'gender', 'birthday', 'location', 'email') 
+0

不這麼認爲作爲電子郵件字段標籤顯示出來(見上圖)。無論如何,我會試試這個。 THKS。 – zan

+0

不幸的是,電子郵件標籤仍然出現,它的佔位符設置爲無。 – zan

+0

嗨,這個電子郵件字段屬於用戶模型或配置文件模型嗎?我沒有看到電子郵件在個人資料模型表單字段中看到此電子郵件字段,但是您使用'profile.email = self.cleaned_data ['email']'設置電子郵件字段。所以我想知道你是什麼樣的模型看起來像..謝謝 –