zoukankan      html  css  js  c++  java
  • 7.连表操作

    利用双下划线和 _set 将表之间的操作连接起来

    一、数据表结构

    from django.db import models

       

    class UserProfile(models.Model):

            user_info = models.OneToOneField('UserInfo',on_delete=None)

            username = models.CharField(max_length=64)

            password = models.CharField(max_length=64)

       

            def __str__(self):

                    return self.username

       

    class UserInfo(models.Model):

            user_type_choice = (

                    (0, u'普通用户'),

                    (1, u'高级用户'),

            )

            user_type = models.IntegerField(choices=user_type_choice)

            name = models.CharField(max_length=32)

            email = models.CharField(max_length=32)

            address = models.CharField(max_length=128)

       

            def __str__(self):

                    return self.name

       

    class UserGroup(models.Model):

            caption = models.CharField(max_length=64)

       

            user_info = models.ManyToManyField('UserInfo')

       

            def __str__(self):

                    return self.caption

       

    class Host(models.Model):

            hostname = models.CharField(max_length=64)

            ip = models.GenericIPAddressField()

            user_group = models.ForeignKey('UserGroup')

       

            def __str__(self):

                    return self.hostname

       

    二、一对一查询

    user_info_obj = models.UserInfo.objects.filter(id=1).first()

    print(user_info_obj.user_type)

    print(user_info_obj.get_user_type_display())

    print(user_info_obj.userprofile.password) #这里userprofile是小写。因为在数据库中全部是小写

       

    user_info_obj = models.UserInfo.objects.filter(id=1).values('email', 'userprofile__username').first()

    print(user_info_obj.keys())

    print(user_info_obj.values())

       

    三、一对多查询

    类似一对一
    1
    、搜索条件使用 __ 连接
    2
    、获取值时使用 . 连接

       

    四、多对多操作

       

       

       

       

       

  • 相关阅读:
    类和对象基础
    《Python》常用内置模块
    《Python》内置方法进阶和常用模块
    《Python》反射、内置方法(__str__,__repr__)
    《Python》 property、classmethod、staticmethod、isinstance、issubclass
    《Python》 面向对象三大特性之多态、封装
    面向对象三大特性之继承
    面向对象初识(组合)
    面向对象之入门-《初识》
    前端基础之jQuery操作标签
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8975561.html
Copyright © 2011-2022 走看看