Python Django之模型&数据库、自定义Field

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)#查询到录入的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值