gpt4 book ai didi

json - Django 如何使用 SplitJSONWidget 保存/编辑 json

转载 作者:行者123 更新时间:2023-12-02 07:09:58 25 4
gpt4 key购买 nike

我正在使用 Django 1.9 library如下:

模型.py:

class Policy(models.Model):
config = JSONField(max_length=50000, blank=True)
name = models.CharField(max_length=200, blank=False, unique=True, default="")

def __unicode__(self):
return self.name

表单.py:

class PolicyForm(forms.ModelForm):
class Meta:
model = Policy
fields = ('name',)

attrs = {'class': 'special', 'size': '25'}
data = forms.CharField(widget=SplitJSONWidget(attrs=attrs, debug=True))

views.py:

def policy_new(request):
json = {
"all": {
"active": True
}
}
if request.method == "POST":
form = PolicyForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.config = form.data
post.save()
return redirect('ui:config-list')
else:
form = PolicyForm(initial={'data': json})

template = 'api/policy_template.html'
context = RequestContext(request, {'form': form})
return render_to_response(template, context)


def policy_edit(request, pk):
policy = get_object_or_404(Policy, pk=pk)
if request.method == "POST":
form = PolicyForm(request.POST, instance=policy)
if form.is_valid():
post = form.save(commit=False)
post.config = form.data
post.save()
return redirect('ui:config-list')
else:
form = PolicyForm(instance=policy, initial={'data': policy.config})
return render(request, 'api/policy_template.html', {'form': form})

我在保存和编辑 json 时遇到问题:

保存:

enter image description here

第一次编辑:

enter image description here

第二次编辑:

enter image description here

如您所见,json 与其自身连接并将 crf token 和名称添加到 json(wtf?)。保存和编辑功能有什么问题?

最佳答案

问题出在保存过程中,解决方案是:

post = form.save(commit=False)
post.config = form.cleaned_data['data']
post.save()

在policy_new()和policy_edit()函数中。

关于json - Django 如何使用 SplitJSONWidget 保存/编辑 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38848464/

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