4

いくつかのクラスでモデルを作成しました。

class Student(models.Model):
    name = models.CharField(max_length=40)
    last_name = models.CharFIeld(max_length=40)
(...)

下部の同じmodels.pyファイルに、モデルの1つに対応するクラスを追加して、フォームを作成できるようにしました。

class StudentForm(ModelForm):
    class Meta:
        model = Student

ModelFormクラスを介して作成されたフォームフィールドをカスタマイズするにはどうすればよいですか?私はdjangoのドキュメントを読んでいて、デフォルトのタイプの部分をオーバーライドすることを理解できません。たとえば、ドキュメントでは、これが機能すると述べています。

class ArticleForm(ModelForm):
    pub_date = DateField(label='Publication date')

    class Meta:
        model = Article

しかし、値を入力すると機能しません。ラベルを定義できません:

class StudentForm(ModelForm):
    name = CharField(label='New label')

    class Meta:
        model = Student

Modelクラスと同じフィールドを持つforms.pyのようなファイルを作成してから、それらをカスタマイズする必要がありますか?モデルフォームのみを使用して、幅、高さなどの単一フィールドのcss属性を変更することは可能ですか?

4

2 に答える 2

6

フォームのフィールドは、差分ライブラリを使用してfromを作成します。インポートして特定のフィールドdjango.formsに使用する必要がありますform.XXX

from django import forms


class StudentForm(ModelForm):
    class Meta:
        model = Student

    subject = forms.CharField(label='New label')
于 2012-12-25T02:37:17.673 に答える
1

モデル形式でフィールドをカスタマイズするために、手動でフィールドを作成する必要はありません。Djangoモデルフィールドには特別な属性があります。

  • verbose_name(フィールドのラベルに移動します)
  • help_text(デフォルトでは、フィールドの下に追加の説明として表示されます)

したがって、必要なのは次のとおりです。

class Student(models.Model):
    name = models.CharField(max_length=40,
                            verbose_name="Student's Name", 
                            help_text="Please tell me your name")  # Optional
    last_name = models.CharFIeld(max_length=40)
    ...

そうすれば、モデル形式でカスタマイズを行う必要はありません。

参照:https ://docs.djangoproject.com/en/dev/ref/models/fields/#verbose-name

于 2014-06-21T19:34:42.190 に答える