我创建了一个包含一些类的模型:
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
我是否必须使用与Model类相同的字段创建一个类似forms.py的文件,然后自定义它们?是否可以仅使用模型表单更改单个字段css属性,如宽度,高度?
答案 0 :(得分:5)
表单字段使用差异库来创建from。您需要导入django.forms
并将form.XXX
用于特定字段
from django import forms
class StudentForm(ModelForm):
class Meta:
model = Student
subject = forms.CharField(label='New label')
答案 1 :(得分: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