123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import ast
- from nltk.tree import Tree
- from django.db import models
- class ListField(models.TextField, metaclass=models.SubfieldBase):
- description = "Python list"
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- def to_python(self, value):
- if not value:
- value = []
- if isinstance(value, list):
- return value
- return ast.literal_eval(value)
- def get_prep_value(self, value):
- if value is None:
- return value
- return str(value)
- def value_to_string(self, obj):
- value = self._get_val_from_obj(obj)
- return self.get_db_prep_value(value)
- class ListSyntacticTreeField(models.TextField, metaclass=models.SubfieldBase):
- description = "List of Stanford syntactic tree"
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- def to_python(self, value):
- if not value:
- value = []
- if isinstance(value, list):
- return value
- xs = ast.literal_eval(value)
- return [Tree.fromstring(x) for x in xs]
- def get_prep_value(self, value):
- if value is None:
- return value
- if isinstance(value, list):
- return str([str(x) for x in value])
- return str(value)
- def value_to_string(self, obj):
- value = self._get_val_from_obj(obj)
- return self.get_db_prep_value(value)
|