Skip to main content
 首页 » 编程设计

python之Django json字段形成字段

2024年08月29日28mfrbuaa

我有一个 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) 

View 将加载 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 

谢谢!

请您参考如下方法:

如果我理解你可以尝试this custom widget's form of django它对表单域和表单域执行 JSON -> JSON after save