gpt4 book ai didi

python - 将 JSONField 解压到多个 Django 表单字段中

转载 作者:行者123 更新时间:2023-11-29 13:43:22 27 4
gpt4 key购买 nike

我在我的 Django 模型中使用来自 django.contrib.postgres.fields 的 JSONField。我想设置我的更新表单,以便它查看传递给它的对象,从 JSONfield 遍历 JSON,并动态创建适量的 CharFields。

模型.py:

class myclass(models.Model):
purpose_section = JSONField()

表单.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”对象不可迭代

关于我遗漏的任何想法?

最佳答案

我不确定您使用的是什么 View ,但假设它是一个将传递您尝试编辑的数据库行实例的 View (例如带有将 pk 传递给它的 url 的 UpdateView) ,

你可以在你的表单中试试这个:

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]

如果您没有使用执行此操作的 View ,则需要自己传递实例。

关于python - 将 JSONField 解压到多个 Django 表单字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52195349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com