Serotonin Storm

source>vcs>fields.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from django.db import models

class SeparatedValuesField(models.TextField):
    __metaclass__ = models.SubfieldBase
 
    def __init__(self, *args, **kwargs):
        self.token = kwargs.pop('token', '||')
        kwargs.update(blank=True,null=True)
        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(map(unicode, value))
 
    def value_to_string(self, obj):
        value = self._get_val_from_obj(obj)
        return self.get_db_prep_value(value)