2016-03-29 21 views
1

veritabanında depolamak için nasıl serileştiririm? Bir proje üzerinde çalışıyorum ve bir formda girilen bilgileri bir veritabanı sütununa json olarak kaydetmem gerekiyor. Formun kendine ait bir modeli yoktur, ancak tüm değerleri json olarak başka bir modelin sütununa depolanır. İşte modelidir:DJANGO: Form değerlerini bir sütun sütunu

class Document(models.Model): 
    user = models.ForeignKey(User) 
    document = models.JSONField(default = {}) 
    category = models.CharField(max_length=255) 

Şimdi ben sütuna document içine farklı formlarda (farklı category ler) den json veri depolamak için gerekli. Burada bu formları bir kategorisidir:

class InformalLetterForm(forms.Form): 
    sender_name = forms.CharField(max_length=45) 
    sender_address = forms.CharField(max_length=255) 
    date = forms.DateTimeField() 
    message_body = forms.CharField() 
    receiver_name = forms.CharField(max_length=255) 

i json nesnesine bu tür bir biçimde girilen veriler bir veri tabanı sütunda depolanacak seri nasıl (yani sütunu yukarıda document).

İnternette arama yaptım, ancak yalnızca model formundaki veriler için yapılan serileştirme işlemlerini gördüm. Sen Formundan .claned_data niteliğini çağırabilir

cevap

0

Herhangi bir yardım için teşekkürler .. üstelik daha json Python kütüphanesinden .dumps() yöntemini çağırabilirsiniz, Python formun verilerle bir sözlük dönecektir. dokümanlarının bir örneği ele alalım:

import json 

# An example simple dict 
d = {'a': 1, 'b': 2} 

json.dumps(d) 

# '{"a": 1, "b": 2}' 
:

>>> data = {'subject': 'hello', 
...   'message': 'Hi there', 
...   'sender': '[email protected]', 
...   'cc_myself': True} 
>>> f = ContactForm(data) 
>>> f.is_valid() 
True 
>>> f.cleaned_data 
{'cc_myself': True, 'message': 'Hi there', 'sender': '[email protected]', 'subject': 'hello'} 
İşte

Eğer verilerle bir sözlük var, şimdi bunu bir json yapalım

İlgili konular