需求: 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----------------------------------------------------------