2013-05-16 1 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) 

мнение, загрузит 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 

спасибо!

ответ

3

Если я понял, вы можете попробовать this custom widget's form of django Это делает JSON в поле форм и поле форм -> JSON после сохранения

+0

Я дам ему попробовать - от первого искать его многообещающее - спасибо! – silviud