2

我有一个 django 应用程序,模型中有一个 json 字段,看起来像这样

from json_field import JSONField
from django.db import models 

class C(models.Model):
    name = models.CharField(max_length=255)
    jf   = JSONField(null=False)

有一个表格显示如下

 class Edit(forms.Form):
     name      = forms.CharField()
     def __init__(self, *args, **kwargs):
         if 'extra' in kwargs:
             extra = kwargs.pop('extra')
             super(Edit, self).__init__(*args, **kwargs)
             for k, v in extra.iteritems():
                  self.fields['%s' % k] = v
         else:
             super(Edit, self).__init__(*args, **kwargs)

该视图将加载 json 字段 jf 并将其作为初始数据发送到表单,并将所有必要的字段作为额外字段发送。

def edit_model(request, pk):
    obj = get_object_or_404(models.C, pk=pk)
    initial = model_to_dict(obj)
    form = Edit(request.POST or None, initial=initial, extra=initial['jf'])
    if request.method == 'POST':
        if form.is_valid():
            .....
            # what is the best practice here ?
            # intersect cleaned data with the jf fields ?!
            # have an external entity that does this ?!
            # is anything built into django that can help

谢谢!

4

1 回答 1

3

如果我理解你可以尝试这个自定义小部件的 django 形式它对表单字段和表单字段执行 JSON -> 保存后的 JSON

于 2013-05-16T22:47:51.813 回答