我们正在做一个使用django框架和MySQL数据库的项目。我想通过使用
在模型中创建一个数组CommaSeparatedIntegerField。
例如:
class MyModel(models.Model):
values = CommaSeparatedIntegerField(max_length = 200)
这将如何在MySQL中呈现?
答案 0 :(得分:2)
MySQL中没有数组。如果将数组存储为逗号分隔的字符串,则在选择,修改数据和优化时会遇到问题。
所以,我建议你把项目存放在表格的行中。
答案 1 :(得分:1)
最好避免这种情况: https://en.wikipedia.org/wiki/1NF
答案 2 :(得分:0)
我不得不做一些这样的事情,我所做的就是按照这里建议的方式使用。
http://justcramer.com/2008/08/08/custom-fields-in-django/
from django.db import models
class SeparatedValuesField(models.TextField):
__metaclass__ = models.SubfieldBase
def __init__(self, *args, **kwargs):
self.token = kwargs.pop('token', ',')
super(SeparatedValuesField, self).__init__(*args, **kwargs)
def to_python(self, value):
if not value: return
if isinstance(value, list):
return value
return value.split(self.token)
def get_db_prep_value(self, value):
if not value: return
assert(isinstance(value, list) or isinstance(value, tuple))
return self.token.join([unicode(s) for s in value])
def value_to_string(self, obj):
value = self._get_val_from_obj(obj)
return self.get_db_prep_value(value)