-
Notifications
You must be signed in to change notification settings - Fork 0
/
fields.py
31 lines (22 loc) · 900 Bytes
/
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
25
26
27
28
29
30
31
__author__ = 'Alex Malyshev <[email protected]>'
from django.db import models
from django.utils.translation import ugettext_lazy as _
from . import StringSet, DEFAULT_SERIALIZER
class StringSetField(models.Field, metaclass=models.SubfieldBase):
description = _('StringSet Field')
serializer = DEFAULT_SERIALIZER
def __init__(self, *args, **kwargs):
try:
self.serializer = kwargs.pop('serializer')
except KeyError:
pass
super(StringSetField, self).__init__(*args, **kwargs)
def get_internal_type(self):
return 'TextField'
def to_python(self, value):
if isinstance(value, StringSet):
return value
return StringSet.deserialize(value, serializer=self.serializer)
def get_prep_value(self, value):
value = self.to_python(value)
return value.serialize(self.serializer)