2013-05-16 63 views
2

我有到模型中有一个JSON场看起来像这样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) 

视图形式的Django应用程序将加载json字段jf并将其作为初始数据发送给Form,以及 将发送所有必需的字段作为额外的。

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 

谢谢!

回答