我正在使用modelformset_factory
在我的界面上编辑多个图像。
我在每张图片中都有以下字段。
Name
User
City
我允许用户选择当前不在系统中的新用户(对于这种情况,我应该得到一个文本" Jack"在我的
def clean_user(self)
代替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')
这也很好用。
请帮忙。
答案 0 :(得分:0)
如果您想使用+-----------------+----------+-------------+---------------------+
| NAME | POSITION | PHONE | EMAIL |
+-----------------+----------+-------------+---------------------+
| John Doe | CEO | 1234-5678-0 | john@company.com |
+-----------------+----------+-------------+---------------------+
| Elvis Presley | Singer | 0234-5678-0 | elvis@heaven.com |
+-----------------+----------+-------------+---------------------+
| Albert Einstein | Thinker | 0000-8888-0 | albert@universe.gov |
+-----------------+----------+-------------+---------------------+
代替self.data
,则可以构建"复合前缀"使用字段self.cleaned_data
和auto_id
(或至少在表单已通过表单集实例化时)。
请参阅prefix
https://docs.djangoproject.com/es/1.9/_modules/django/forms/formsets/
您的方法将如下所示:
_construct_form()
<强>更新强>
更简单的是调用方法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