我只想要一个下拉字段 - 如下所示:
Sex: | Male |v|
| Female |
你知道,这是一个非常标准的下拉。
我为此创造了这个:
class Relationship(models.Model):
SEX = [
("M","Male"),
("F","Female")
]
title = models.CharField(max_length=100)
sex = models.ChoiceField(label='', choices=SEX)
我将自己处理模板中的标签,因此label=""
问题是这样的:当我运行syncdb时,django吓坏了,因为首先是:
class RelationshipForm(forms.ModelForm):
class Meta:
model = Relationship
ordering = ['create_date']
fields = ('title','sex')
可悲的是,这导致我得到这个例外:
django.core.exceptions.FieldError:为关系指定的未知字段(性别)
我该怎么办?要明确:
我希望创建的关系数据库表具有“性别”字段,该字段包含男性或女性
我想在你建立新关系时出现wee下拉列表。
我确定这很简单,有什么想法吗?
答案 0 :(得分:3)
模型中没有ChoiceField
。您希望CharField
选择如下。
sex = models.CharField(max_length=1, label='', choices=SEX)
答案 1 :(得分:0)
可替换地:
class Profile(models.Modell):
"""
User profile model
"""
PROF = 1
DR = 2
MR = 3
MRS = 4
MS = 5
PROFESSION_TITLE = ((PROF, 'Prof.'),
(DR, 'Dr.'),
(MR, 'Mr'),
(MRS, 'Mrs'),
(MS, 'Ms'),)
# personal details
user = models.ForeignKey(User, unique=True)
title = models.IntegerField('Title', choices=PROFESSION_TITLE,
max_length=25, blank=True, null=True)
请参阅此链接:http://www.b-list.org/weblog/2007/nov/02/handle-choices-right-way/
答案 2 :(得分:0)
哎呀。我看到我做错了什么 - 基本错误。我现在暂时把它放在这里,除非这里的每个人都认为这是不必要的基本事情@ SO
在模型中:
class Relationship(models.Model):
title = models.CharField(max_length=100)
sex = models.CharFieldField(max_length=100)
表格中的:
class RelationshipForm(forms.ModelForm):
class Meta:
model = Relationship
ordering = ['create_date']
fields = ('title','sexField')
SEX = [
("M","guy"),
("F","girl")
]
sexField = ChoiceField(label='', choices=SEX)
def clean(self):
cleaned_data = super(RelationshipForm, self).clean()
self.instance.sex = (self.cleaned_data.get('sexField',None) )