![](/img/trans.png)
[英]How to save a model in ModelForm with two ForeignKey fields in Django
[英]Save a Django ModelForm with default fields values in Model
我有一个带有2个字段的FooModel
模型,其默认值( default=xxx
)并标记为空白( blank=True
),我使用FooModel
创建了一个ModelForm
( django.forms.ModelForm
),现在我想在提交后保存它,所以在我看来,我有以下代码:
f = FooForm(request.POST)
if f.is_valid():
f.save()
问题在于,以这种方式,我从数据库中收到了一个违规异常,因为未以html形式呈现的字段不会像我期望的那样在FooForm实例中自动继承...如何包含原始模型中的字段哪些不应该显示给用户? (我不想将它们渲染为隐藏字段!)
到目前为止,我尝试了2种方法,但均失败了...
在FooForm构造函数中指定实例( f = FooForm(request.POST, instance=FooModel())
)
创建FooModel的实例,然后将自动生成的值手动分配给表单的数据:
i = FooModel() f.data.fieldA = i.fieldA f.data.fieldB = i.fieldB
更新:
通过更准确地阅读django文档,我以这种方式解决了:
if f.is_valid():
formModel = f.save(commit=False)
foo = FooModel()
formModel.fieldA = foo.fieldA
formModel.fieldB = foo.fieldB
formModel.save()
但是,老实说,我不满意...我想抽象出这些字段的内容...也许通过使用自定义装饰器...类似:
f = MissingFieldsDecorator(FooForm(request.POST))
f.save()
如何包含原始模型中不应显示给用户的字段?
回答问题的这一部分
class FooForm(ModelForm):
class Meta:
model = FooModel
exclude = ('not_displayed_field',)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.