Files
agentic-soc-platform/Core/models.py
T
2025-09-26 21:50:06 +08:00

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)