2016-10-02 75 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']'设置电子邮件字段。所以我想知道你是什么样的模型看起来像..谢谢 –