我在Django模型中使用了django.contrib.postgres.fields中的JSONField。我想设置我的更新表单,以便它查看传递给它的对象,从JSONfield遍历JSON,并动态创建适量的CharFields。
models.py:
class myclass(models.Model):
purpose_section = JSONField()
forms.py:
class myclassForm(forms.ModelForm):
class Meta:
model = myclass
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for i in self.fields['purpose_section'].initial:
self.fields['purpose_section_%s' % i] = forms.CharField(label="purpose_section_" + i,value=i.content)
当我尝试访问页面时,收到错误消息: “ NoneType”对象不可迭代
关于我所缺少的东西有什么想法吗?
答案 0 :(得分:0)
我不确定您使用的是哪个视图,但是假设该视图将传递您要编辑的数据库行实例(例如UpdateView,其URL将pk传递给它) ,
您可以按照自己的形式尝试:
for key in self.instance.purpose_section:
self.fields[key] = forms.CharField(label=key, max_length=256)
self.fields[key].initial = self.instance.purpose_section[key]
如果不使用执行该操作的视图,则需要自己传递实例。