zoukankan      html  css  js  c++  java
  • Django学习手册

    Django 外键创建

    关键语法: 

      models.ForeignKey("UserGroup",to_field="gid",default=1,on_delete=models.CASCADE)

    参数:

      "UserGroup"            #外键另外一张表

      to_field="gid"           #另外一张表的字段

      on_delete=models.CASCADE    #因为不加这个会报错相关(https://www.cnblogs.com/phyger/p/8035253.html)

    创建数据表格:

    from django.db import models
    
    # Create your models here.
    
    class userinfo(models.Model):
        uname = models.CharField(max_length=32,db_column="用户名")
        pwd = models.CharField(max_length=32,db_column="密码")
        email = models.EmailField(null=True,db_column="邮箱")
        usergroup = models.ForeignKey("UserGroup",to_field="gid",default=1,on_delete=models.CASCADE)
    
    class UserGroup(models.Model):
        gid = models.AutoField(primary_key=True)
        gname = models.CharField(max_length=32)
        test = models.CharField(max_length=32,null=True)
        g = models.ForeignKey("Group", to_field="id",null=True,on_delete=models.CASCADE)
    
    class Group(models.Model):
        grouplist = models.CharField(max_length=255)

    在每个字段中都录入数据:

    usergroup表 外键 g_id

    userinfo表 外键 usergroup_id

    跨表查询:原理--(对象(对象(对象)))

    obj2 = models.userinfo.objects.filter(uname="root").first()
    print(obj2.usergroup.g.grouplist)

    Django 外键 数据获取

    定义表结构:

    from django.db import models
    
    # Create your models here.
    class userinfo(models.Model):
        uname = models.CharField(max_length=255)
        sex = models.CharField(max_length=12)
        g = models.ForeignKey("usergroup",to_field="id",on_delete=models.CASCADE,default='1')
    
    class usergroup(models.Model):
        groupname = models.CharField(max_length=255)

    外键 数据获取:

    def index(request):
        # #方式一,obj对象方式
        # ss = models.userinfo.objects.filter(id=1)
        #
        # for i in ss :
        #     # print(i) 为一个OBJ 对象
        #     print(i.uname,i.sex,i.g_id,i.g.id,i.g.groupname)
    
        #方式二,字典方式
        # ss2 = models.userinfo.objects.filter(id=1).values("id","uname","g__groupname")
        # for i2 in ss2 :
        #     # print(i2) 为一个字典对象,根据key取值
        #     print(i2['id'],i2['uname'],i2['g__groupname'])
    
        # 方式三,元组方式
        # ss2 = models.userinfo.objects.filter(id=1).values_list("id","uname","g__groupname")
        # for i2 in ss2 :
        #     # print(i2) 为一个元组对象,根据索引取值
        #     print(i2[0],i2[1],i2[2])
    
        #总结,在利用一对多的表查询时,字典和元组 方式不能直接用 “ . ”(点) 的方式直接取值,否则会直接报错。
        #取值通过 双下划 线的方式取值。
    
        return HttpResponse("OK")

    外键创建新数据:

        #外键 创建新数据条目:
        models.userinfo.objects.create(
            uname="小花",
            sex="",
            g_id="3"
        )
        #添加一条数据,跨表添加时需引用外键的id,而不是外键对象
  • 相关阅读:
    20155215 第二周测试1 与 myod
    2017-2018-1 20155215 《信息安全系统设计基础》第1周学习总结
    第十四周 P187教材检查
    数据库1 实验代码和截图补交
    20155215 2016-2017-2《Java程序设计》课程总结
    20155215 宣言 实验五 网络编程与安全 实验报告
    实验MyOD
    Alpha冲刺——代码规范与计划
    您为何会咸鱼———项目系统设计与数据库设计
    您为何会咸鱼——团队 Gitee 实战训练
  • 原文地址:https://www.cnblogs.com/Anec/p/9530194.html
Copyright © 2011-2022 走看看