我在StackOverflow中读过一些关于forms.Form
vsforms.ModelForm
的帖子。在
似乎当数据库中已经有表单的表时,最好使用ModelForm
,这样就不必再次声明所有属性,因为它们已经存在于中的相应类中模型.py在
所以我的问题是
如何排除原始类的一系列属性,下面的排除表达式行吗?在
class CreatePositionForm(ModelForm):
class Meta:
model = job_position
exclude = ('create_date','post_date','is_valid',)
当使用ModelForm时,这是否意味着原始属性不应该被更改,并且在类Meta之前不会有更多的代码?(就像上面的代码一样)
任何人都可以告诉我表单比简单的HTML有什么好处 表单标记,但它有助于报告
^{pr2}$我是Django的新学员,如果这些问题看起来很愚蠢,请原谅我,非常感谢您的澄清!
“验证”似乎是对3的一个很大的回答——它通常是web框架的一个主要特性。至于不使用HTML标记,这里有一个DRY principle:如果您已经定义了表单的字段是什么(为了验证的目的),为什么要在模板中复制它?有一个关于你的表单是怎样的(在Django中,}和{}一起)的单一真实源,并从这个单一的源中派生出你能得到的东西(HTML)。在
Form
对象,或者{正如django文件所述:
当您需要与任何已定义模型密切相关的表单时,ModelForm非常有用。ModelForm相对于
form.Form
类的优势是不需要编写额外的代码。例如:假设您有一个定义如下的模型:现在让我们使用3种不同的方法创建一个表单,看看哪一个最容易实现。在
简单HTML表单
对于纯HTML表单,您需要实现模板中的表单元素,然后自己验证数据,如下所示。在
^{pr2}$然后在视图中:
使用形式。形式类
使用
django.forms.Form
类,您可以如下定义表单使用ModelForm类
因此,使用
ModelForm
类,您可以简单地在4-5行代码内创建表单,还可以让django为您进行验证和显示表单错误。在现在回答你的问题
exclude
或定义fields
。在排除
字段
我真不明白你说的
original attributes are not supposed to be changed
是什么意思???使用ModelForm的好处
1-是的,可以使用
关于模型形式的更多信息请点击此处-https://docs.djangoproject.com/en/dev/topics/forms/modelforms/
2-不能更改模型形式的属性是错误的, 您可以通过在类中定义相同的属性来覆盖它 你可以做任何类似于普通形式的操作来覆盖初始、选择等 考试-
^{pr2}$3-最有价值的好处是,它本身就可以进行表单验证,无论你是否编写自己的html,你都必须编写一行很长的代码。 例如,你给了一个char字段,它将抛出一个错误,并在html上的field属性中添加error类,这是一个很大的优点。 因此,在开发检查功能时,它减少了编写html的开销。在
相关问题 更多 >
编程相关推荐