如何清除InlineFormSet中的某个字段? [英] How to clean a certain field in a InlineFormSet?

查看:75
本文介绍了如何清除InlineFormSet中的某个字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要清除内联表单集中的特定字段,但我不知道该怎么做。

I need to clean a specific field in an inline formset, and I can't figure out how to do it.

我已经尝试过用 def clean(self)格式集,但是不知道在哪里保存净值。如果我尝试将清除值设置为 forms [0] .data ['field'] ,则会收到此QueryDict实例是不可变的错误。

I've tried with the formsets def clean(self) method but don't know where to save the cleaned value. If I try to set the cleaned value to forms[0].data['field'] I get "This QueryDict instance is immutable" error.

在正常形式下,它通过使用 def clean_fieldXY(self)方法工作,在该方法中,我返回cleaned_value

In "normal" forms it works by using the def clean_fieldXY(self) method in which I return cleaned_value.

请帮助。

推荐答案

您可以将内联表单集设置为使用表单类,然后可以为该字段创建 clean 函数。

You can set the inline formset to use a form class, and then you can create a clean function for the field.

myapp / forms.py

class InlineFormsetForm(forms.Form)
    myfield = forms.CharField(required=False, max_length=50)

    def clean_myfield(self):
        data = self.cleaned_data['myfield']
        if data == 'badinput':
            raise forms.ValidationError("I hates it!")
        return data

然后,在 myapp / views.py

from myapp.forms import InlineFormsetForm
from myapp.models import ParentRecord, ChildRecord

def editmything(request):
    MyFormSet = inlineformset_factory(ParentRecord, ChildRecord, form=InlineFormsetForm)

这篇关于如何清除InlineFormSet中的某个字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆