0
什麼是在Django模型字段中存儲數組的方法?如何將數組存儲在Django Model字段中(不使用PostgreSQL)?
在某些情況下,不使用單獨的模型/表格。這是不需要索引的靜態信息。我想在模型字段中管理簡單的數組。
什麼是在Django模型字段中存儲數組的方法?如何將數組存儲在Django Model字段中(不使用PostgreSQL)?
在某些情況下,不使用單獨的模型/表格。這是不需要索引的靜態信息。我想在模型字段中管理簡單的數組。
你可以寫你自己的領域類 - 是這樣的:
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)
謝謝。我會嘗試它並添加數組管理(添加,刪除和更新單個值)。 –
JSON領域將是你的情況更好。或者,如果你不想做太多的事情,只要將列表弄平並以逗號分隔值存儲即可 –
你真的需要在數據庫中存儲數組嗎?這是一個反模式(儘管可能有一些有效的案例)。 –
這是靜態數據,它們不需要進行索引。我更快地將它包含在同一個模型中。我不想創建一個多對多的外鍵關係。 –