ModelForm“instance”参数和外键字段

2024-05-12 12:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用in“instance”参数初始化一个对象,但它没有进入表单。它是必需的,因此is-Tu valid失败。有人能给我个建议吗,我几乎可以肯定这是一个很容易犯的错误,但我不能发现它。在

形式:

from django.forms import ModelForm

from tagging.forms import TagField

class BusinessEditForm(ModelForm):
tags = TagField()

class Meta:
    model = Business
    exclude = ('owner', 'pub_date')

逻辑输入视图.py在

^{pr2}$

最后一行验证为False。在

欢迎任何帮助。在

谢谢, 伊戈尔


Tags: 对象instanceinfromimport表单参数is
3条回答

在不弄乱视图的情况下,您可以编写表单clean方法:

def clean(self):
  self.cleaned_data.update(excluded_field=self.instance.excluded_field)
  return super(YourForm, self).clean()

但是,您还应该在表单中要求给定实例并设置排除字段。在

如果要排除表单中的必需字段,则需要在调用is_valid()之前以编程方式设置这些字段,因为否则表单不会创建有效的Business对象。这就是is_valid()返回{}的原因。在

如果您需要将instance传递给表单,就好像它是表单数据的一部分,那么您可以尝试如下操作:

if request.method == "POST":
    form_data = request.POST.copy()
    form_data['instance'] = b
    form = forms.BusinessEditForm(form_data)

相关问题 更多 >