Django Mysql 试图

需求: Django ORM 调用mysql中的试图表

1. mysql创建试图 (关联多张表,形成一张虚拟表)

CREATE VIEW v_test as 
select tb_user.id user_id, tb_user.name user_name, tb_class.name class_name from tb_user, tb_class where tb_user.class_id=tb_class.id;

2. 在django 项目指定的app下的models.py中 (请注意仔细阅读注释内容)

    model中的字段名必须与mysql试图表中字段名一致,并且个数相等。

from django.db import models


class MysqlViewModel(models.Model):
    """msyql试图"""
    user_id = models.IntegerField(primary_key=True, verbose_name='用户ID')    # 必须指定主键,不然django会报错
    user_name = models.CharField(max_length=64, verbose_name='用户名')
    class_name = models.CharField(max_length=64, verbose_name='班级名')

    class Meta(object):
        managed = False                     # 默认是Ture 设成False django将不会执行建表和删表操作,但会生成迁移文件
        # abstract = True                   # 设置为True将不会生成迁移文件,但无法使用ORM查询
        db_table = 'v_test'                 # 视图名(虚拟表名)

3. app下的view.py 中,可以正常使用ORM

from .models import MysqlViewModel

# ORM查询
data = MysqlViewModel.objects.filter(user_id=1)

-----------------------------------------------------END----------------------------------------------------------

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值