4

我创建了一个包含一些类的模型:

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

在底部的同一个 models.py 文件中,我添加了一个与我的一个模型相对应的类,这样我就可以创建一个表单:

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

我是否必须创建一个像 forms.py 这样的文件,其字段与 Model 类中的字段相同,然后对其进行自定义?是否可以仅使用 Model Forms 更改单个字段的 css 属性,如宽度、高度?

4

2 回答 2

6

表单字段使用差异库来创建来源。您需要为特定字段导入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 回答