2014-01-23 52 views
0

我們正在做一個使用django框架和MySQL數據庫的項目。我想在模型中使用MySQL中數組的表示方式

CommaSeparatedIntegerField。

如:

class MyModel(models.Model):
values = CommaSeparatedIntegerField(max_length = 200)

這將如何在MySQL來表示?

回答

2

MySQL中沒有數組。如果將數組存儲爲逗號分隔的字符串,那麼在選擇,修改數據和優化時會遇到問題。

所以,我建議你將項目存儲在表格的行中。

+0

奧萊特感謝的人! – Alok

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) 
相關問題