0

我只想要一个下拉字段 - 如下所示:

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:为关系指定的未知字段(性别)

我到底要做什么?要清楚:

  1. 我希望创建的关系数据库表有一个“性别”字段,该字段包含男性或女性

  2. 我希望在您建立新关系时显示 wee 下拉菜单。

我敢肯定这非常简单,有什么想法吗?

4

3 回答 3

3

模型中没有ChoiceField。你想要CharField的选择如下。

sex = models.CharField(max_length=1, label='', choices=SEX)

于 2012-07-11T04:14:45.233 回答
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) )
于 2012-07-11T11:36:53.890 回答
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/

于 2012-07-11T08:31:53.197 回答