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. あなたが新しい関係を築いたときに、ウィードロップダウンが表示されるようにしたい.

これはとてもシンプルだと思いますが、何かアイデアはありますか?

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 に答える