我有两个关于模型和表格的问题。
1)为模型自动创建表单的最佳方法是什么?
在下面的示例中,我有两个模型 - ModelA和ModelB。我需要它们的形式 - ModelAForm和ModelBForm。它们应该自动定义。我不想手动操作,因为将来我会添加其他模型,所有表单看起来都一样。我正在考虑为模型创建特殊装饰器并使用modelform_factory。
from django.db import models
from django.forms import ModelForm
class ModelA(models.Model):
...
class ModelB(models.Model):
...
class ModelAForm(ModelForm):
class Meta:
abstract = ModelA
class ModelBForm(ModelForm):
class Meta:
abstract = ModelB
2)假设我只使用ModelForm表单,可以找到模型的表单吗?例。我有两个模型ModelA和ModelB,两个模型ModelAForm和ModelBForm。我有ModelA的实例,我想确定这个模型的正确形式,我将传递给模板 - 在本例中为ModelAForm。
答案 0 :(得分:3)
Django提供了一些generic editing views。您只需提供模型,视图将自动生成表单。如果您想使用表单来创建或更新实例,您可以使用它们。
如果您确实需要自己创建表单,可以使用这些视图自己使用的modelform_factory为模型创建正确的表单。但我会首先使用通用视图,只要它们可以根据您的需要进行修改。
只需传递您的模型以及您想要的字段。如果省略这些字段,将生成所有字段:
from .models import MyModel
from django.forms.models import modelform_factory
my_form = modelform_factory(MyModel, fields=['name', 'age', 'job'])
答案 1 :(得分:1)
django中有ModelForm。 这是文档的片段和链接。 https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/
class ArticleForm(ModelForm):
class Meta:
model = Article
fields = ['pub_date', 'headline', 'content', 'reporter']
您可能正在寻找基于类的通用视图,只传递form_class
和model
实例,django在没有您帮助的情况下处理其他所有内容。
链接他们 - https://docs.djangoproject.com/en/1.10/ref/class-based-views/