繁体   English   中英

如何以干净的方法从model_formset_factory中的self.data获取文件

[英]How to get a filed from self.data in model_formset_factory in clean method

我正在使用modelformset_factory在界面上编辑多个图像。 每个图像中都有以下字段。

Name
User
City

我已允许用户选择当前不在系统中的新用户,(对于这种情况,我应该在def clean_user(self)获得文本“ Jack”,而不是ID

但是使用model_formseta_factory ,我在self.data中得到了一些有线名称。 当我尝试获取self.data.get('user')时,我一无所获,显然没有使用该名称的密钥,该密钥的形式类似于form_0_user等。

fields = ['city', 'name']

注意,我的字段中没有用户。 如果我这样做,它将无法通过验证。

def clean(self):
    data = self.cleaned_data
    data['name'] = data.get('name', '').strip()
    return data

工作正常

pic_credits = self.data.get('user')

这不是。

pic_credits = self.data.get('form-0-name')

这也很好。

请帮忙。

如果要使用self.data而不是self.cleaned_data ,则可以使用字段auto_idprefix (或至少在表单已由表单集实例化的情况下)构造“复合前缀”。

参见_construct_form() https://docs.djangoproject.com/es/1.9/_modules/django/forms/formsets/

您的方法将如下所示:

def clean(self):
    # ...

    form_prefix_and_autoid = "%s-%d-" % (self.prefix, self.auto_id)
    pic_credits = self.data.get(form_prefix_and_autoid + 'name')         

    # ...

更新:

调用方法self.add_prefix简单得多

    pic_credits = self.data.get(self.add_prefix('name'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM