我有一个带有一些文本选项的自定义用户模型,如何将该选项“大陆”放入表单?以便我使用{{ form }}渲染html页面并显示选项?
我试过Forms1.py和Forms2.py,但都不起作用。
Models.py
class CustomUser(AbstractUser): #USER MODEL
# CHOICES FOR USER CONTINENT
class Continents(models.TextChoices):
EUROPE = 'EUROPE' , 'EUROPE'
AFRICA = 'AFRICA' , 'AFRICA'
SOUTH_AMERICA = 'SOUTH AMERICA' , 'SOUTH AMERICA'
NORTH_AMERICA = 'NORTH AMERICA' , 'NORTH AMERICA'
OCEANIA = 'OCEANIA' , 'OCEANIA'
ASIA = 'ASIA' , 'ASIA'
username=None
nickname = models.CharField(max_length= 50, default = 'Not Set', blank=True)
bio = models.TextField(max_length = 500 , blank=True , null= True , default= "Not Set")
email = models.EmailField(max_length= 256 , unique=True) #USERS EMAIL ADDRESS
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
Forms1.py
class CompleteProfileForm(forms.Form):
bio = forms.CharField(
label='Bio: ',
widget = forms.Textarea(
attrs = {
'class':'bioInput'
}
)
)
class Meta:
model = CustomUser
fields = ['bio', 'continent']
exclude = ['username']
continents = forms.ChoiceField(label='Continents', choices= CustomUser.Continents)
Forms2.py
class CompleteProfileForm(forms.Form):
bio = forms.CharField(
label='Bio: ',
widget = forms.Textarea(
attrs = {
'class':'bioInput'
}
)
)
continents = forms.ChoiceField(
choices=CustomUser.Continents,
widget = forms.Select(
attrs = {
'class':'continent',
'selected':'Continent',
'id':'continent',
}
)
)
我也用UserCreationForm完成了这一点,它是这样工作的,对于字段性别:
Forms.py
class CustomUserCreationForm(UserCreationForm):
......
......
......
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = ['email', 'password1', 'password2', 'gender']
exclude = ['username']
genders = forms.ChoiceField(label = 'Gender: ', choices= CustomUser.Genders)
i获取的错误为:TypeError: EnumType.__call__() missing 1 required positional argument: 'value'
1条答案
按热度按时间yhxst69z1#
Django作为你找到的一个内置的
form.ChoiceField
(doc)。您忽略的是
choices=
参数接受一个列表,该列表是一个表示选项的元组。该列表可以通过.choices
字段(doc)从TextChoices中检索上面的方法应该可以