0
我想爲我的模型使用Django + MySQL實現自定義JSON字段。這就是我的models.py樣子:在Django自定義JSONField
from __future__ import unicode_literals
from django.db import models
from django.db import models
from django.core.serializers.json import DjangoJSONEncoder
import json
class JSONField(models.TextField):
"""JSONField is a generic textfield that neatly serializes/unserializes
JSON objects seamlessly"""
# Used so to_python() is called
__metaclass__ = models.SubfieldBase
def to_python(self, value):
"""Convert our string value to JSON after we load it from the DB"""
if value == "":
return None
try:
if isinstance(value, basestring):
return json.loads(value)
except ValueError:
pass
return value
def get_db_prep_save(self, value):
"""Convert our JSON object to a string before we save"""
if value == "":
return None
if isinstance(value, dict):
value = json.dumps(value, cls=DjangoJSONEncoder)
return super(JSONField, self).get_db_prep_save(value)
# Articles/Content
class Content(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
data = JSONField(blank=True, null=True)
def __unicode__(self):
return self.title
def save(self, *args, **kwargs):
self.data = {
name1 : {
"image_url" : 'https://photosite.com/image1.jpg',
"views" : 0
},
name2 : {
"image_url" : 'https://photosite.com/image2.jpg',
"views" : 0
}
}
super(Content, self).save(*args, **kwargs)
基本上,在保存內容,我想初始化數據字段。但是,我現在得到這個錯誤:
get_db_prep_save() got an unexpected keyword argument 'connection'
我究竟在做什麼錯?我該如何解決這個問題?任何幫助,將不勝感激。
現在我得到這個錯誤:get_db_prep_save()需要恰好3個參數(2給出)引用線返回超級(JSONField,self).get_db_prep_save(值)。但是,將其更改爲返回超級(JSONField,self).get_db_prep_save(value,connection)將返回一個新錯誤:INTERFACE ERROR - 錯誤綁定參數2 - 可能不支持的類型。 –
您也必須將'connection'傳遞給父函數。 –
我對你的意思有點困惑。請你詳細說明一下嗎?謝謝。 –