mirror of
https://github.com/FunnyWolf/agentic-soc-platform.git
synced 2026-08-22 13:12:56 +02:00
72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
import ast
|
|
|
|
from django.db import models
|
|
|
|
|
|
# Create your models here.
|
|
|
|
|
|
class DiyListField(models.TextField):
|
|
"""数据库中用来存储list类型字段"""
|
|
description = "Stores a python list"
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(DiyListField, self).__init__(*args, **kwargs)
|
|
|
|
def get_prep_value(self, value): # 将python对象转为查询值
|
|
if value is None:
|
|
return value
|
|
|
|
return str(value) # use str(value) in Python 3
|
|
|
|
@staticmethod
|
|
def from_db_value(value, expression, connection):
|
|
if not value:
|
|
value = []
|
|
if isinstance(value, list):
|
|
return value
|
|
# 直接将字符串转换成python内置的list
|
|
try:
|
|
return ast.literal_eval(value)
|
|
except Exception as E:
|
|
from Lib.log import logger
|
|
logger.exception(E)
|
|
logger.error(value)
|
|
return []
|
|
|
|
def value_to_string(self, obj):
|
|
value = self._get_val_from_obj(obj)
|
|
return self.get_db_prep_value(value)
|
|
|
|
|
|
class DiyDictField(models.TextField):
|
|
"""数据库中用来存储dict类型字段"""
|
|
description = "Stores a python dict"
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(DiyDictField, self).__init__(*args, **kwargs)
|
|
|
|
def get_prep_value(self, value): # 将python对象转为查询值
|
|
if value is None:
|
|
return value
|
|
|
|
return str(value) # use str(value) in Python 3
|
|
|
|
def from_db_value(self, value, expression, connection):
|
|
if not value:
|
|
value = []
|
|
if isinstance(value, dict):
|
|
return value
|
|
# 直接将字符串转换成python内置的list
|
|
try:
|
|
return ast.literal_eval(value)
|
|
except Exception as E:
|
|
from Lib.log import logger
|
|
logger.exception(E)
|
|
logger.error(value)
|
|
return {}
|
|
|
|
def value_to_string(self, obj):
|
|
value = self._get_val_from_obj(obj)
|
|
return self.get_db_prep_value(value)
|