Django视图之ORM连表操作一

Posted Pythia丶陌乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django视图之ORM连表操作一相关的知识,希望对你有一定的参考价值。

1 项目路径结构树

 

 

2 models创建类

 

from django.db import models

class UserType(models.Model):

    \'\'\'

    用户类型

    \'\'\'

    title = models.CharField(max_length=12)

 
class UserInfo(models.Model):

    \'\'\'

    用户表

    \'\'\'

    name = models.CharField(max_length=16)

    age = models.IntegerField()

 ut = models.ForeignKey(\'UserType\')

  

CharField :char类型

IntegerField: int类型

ForeignKey: 关联表

 

3 检测app是否注册项目

 

 

添加app01

 

 

4 初始化数据库

初始化db.sqlite3数据库

1.创建表结构

>>python manage.py makemigrations

Migrations for \'app01\':

  app01\\migrations\\0001_initial.py

    - Create model UserInfo

    - Create model UserType

- Add field ut to userinfo

  

2. 初始化数据库

>> python manage.py migrate

Operations to perform:

  Apply all migrations: admin, app01, auth, contenttypes, sessions

Running migrations:

  Applying contenttypes.0001_initial... OK

  Applying auth.0001_initial... OK

  Applying admin.0001_initial... OK

  Applying admin.0002_logentry_remove_auto_add... OK

  Applying app01.0001_initial... OK

  Applying contenttypes.0002_remove_content_type_name... OK

  Applying auth.0002_alter_permission_name_max_length... OK

  Applying auth.0003_alter_user_email_max_length... OK

  Applying auth.0004_alter_user_username_opts... OK

  Applying auth.0005_alter_user_last_login_null... OK

  Applying auth.0006_require_contenttypes_0002... OK

  Applying auth.0007_alter_validators_add_error_messages... OK

  Applying auth.0008_alter_user_username_max_length... OK

  Applying sessions.0001_initial... OK

  

5 创建表数据

1)     urls映射关系

urlpatterns = [

    url(r\'^create_data/\', views.create_data),

]

  

2)     创建视图函数

from django.shortcuts import render,redirect,HttpResponse

from app01 import models

 

# Create your views here.

 

def create_data(request):

    \'\'\'创建书籍\'\'\'

    #models.UserType.objects.create(title=\'普通用户\')

    #models.UserType.objects.create(title=\'白金用户\')

    #models.UserType.objects.create(title=\'砖石用户\')

\'\'\'创建用户\'\'\'

  #models.UserInfo.objects.create(name=\'alex\',age=32,ut_id=1)

   #models.UserInfo.objects.create(name=\'egon\',age=42,ut_id=2)

   #models.UserInfo.objects.create(name=\'yuan\',age=32,ut_id=3)

   #models.UserInfo.objects.create(name=\'naza\',age=32,ut_id=1)

 

\'\'\'获取数据\'\'\'

    result = models.UserInfo.objects.all()

    for obj in result:

    print(obj.name,obj.age)

 

    return HttpResponse(\'...\')

  

 

\'\'\'

   alex 32

   egon 42

   yuan 32

   naza 32

 

\'\'\'

  

 

 

 

 

跨表操作获取数据

result = models.UserInfo.objects.all()

    for obj in result:

        print(obj.name,obj.age,obj.ut.title)

 

alex 32 普通用户

egon 42 白金用户

yuan 32 砖石用户

naza 32 普通用户

  

6 访问初始化数据

http://127.0.0.1:8000/create_data/

  

 

 

 

以上是关于Django视图之ORM连表操作一的主要内容,如果未能解决你的问题,请参考以下文章

Django - ORM操作

Django进阶-ORM框架的一般操作

Python 什么是ORM?

Django ORM queryset object 解释(子查询和join连表查询的结果)

python—day60 Object Relational Mapping(ORM) ORM连表查询 ORM进阶

Django之数据库连表操作