在Django模型字段中存储数组的方法是什么?
在某些情况下,使用单独的模型/表不具备效果。这是不需要编制索引的静态信息。我想在模型字段中管理简单数组。
答案 0 :(得分:0)
您可以编写自己的字段类 - 例如:
import json
from django.db import models
class JSONField(models.TextField):
description = "A field to store arbitrary python objects in JSON format"
def from_db_value(self, value, expression, connection, context):
if value is None or value == "":
return None
return json.loads(value)
def to_python(self, value):
if value is None:
return value
if not isinstance(value, basestring):
return value
return json.loads(value)
def get_prep_value(self, value):
return json.dumps(value)
def value_to_string(self, obj):
value = self._get_val_from_obj(obj)
return self.get_prep_value(value)
def formfield(self, **kwargs):
defaults = {'form_class': JSONFormField}
defaults.update(kwargs)
return super(JSONField, self).formfield(**defaults)
class JSONFormField(forms.CharField):
widget = forms.Textarea
def to_python(self, value):
return json.loads(value)
def prepare_value(self, value):
return json.dumps(value)
def clean(self, value):
return self.to_python(value)