gpt4 book ai didi

python - Django 自定义 JSONField 的 InterfaceError

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:45 25 4
gpt4 key购买 nike

我正在尝试为支持 MySQL 的 Django 项目构建自定义 JSON 字段。这是我的模型:

from __future__ import unicode_literals
from django.db import models
from django.db import models
from django.core.serializers.json import DjangoJSONEncoder
import json

name1 = 'name1'
name2 = 'name2'

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, connection):
"""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, connection)

# 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)

请注意内容模型的自定义保存方法。当我尝试保存新的 Content 对象时,出现此错误:

/admin/myapp/content/add/处出现接口(interface)错误

绑定(bind)参数 2 时出错 - 可能不受支持的类型。

我到底做错了什么?该错误到底意味着什么。我的意思是它说“可能”,就好像它甚至不确定是否存在错误一样。有什么帮助吗?

如果您想要完整的回溯,您可以在这里找到它: http://pastebin.com/B15hZpbu

最佳答案

在调用用户方法之前,此代码将产生 undefined variable 错误。

data = {
name1 : {
"image_url" : 'https://photosite.com/image1.jpg',
"views" : 0
},
name2 : {
"image_url" : 'https://photosite.com/image2.jpg',
"views" : 0
}
}

name1 和 name2 显然没有在您的代码中定义。

关于python - Django 自定义 JSONField 的 InterfaceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38674469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com