PS:本文需要已建立Django与数据库连接,同时又对Django的Field有一些了解。
1、以下是自定义Field的python代码,基于应用app1:
from django.db import models # 自定义Field class MyField(models.TextField): # 编写自定义的主体Field内容 # 实现一个列表的类型的自定义 def __init__(self, *args, **kwargs): super(MyField, self).__init__(*args, **kwargs) # 将数据库的内容转换为Python的对象 def to_python(self, value): if not value: value = [] if isinstance(value, list): return value return value # 将python对象保存的数据库中 def get_prep_value(self, value): if value is None: return value return str(value) # 强行转换为字符串存入数据库 # 把python对象转为字符串 def value_to_string(self, obj): value = self._get_val_from_obj(obj)#获取对象的值 return self.get_db_prep_value(value) class MyFieldTest(models.Model): id = models.IntegerField() subs = MyField() def __str__(self): return str(self.id) + ',' + str(self.subs)
2、cmd之后同步数据库
1)python manage.py makemigrations
2)python manage.py migrate
3、进入python交互
python manage.py shell
4、插入数据
from app1.models import MyFieldTest #引入类
MyFieldTest.objects.create(id=1,subs=['1','2','3','4']) #向数据库内插入数据
5、查询数据
MyFieldTest.objects.get(id=1)#查询到录入的数据