• 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
    、获取值时使用 . 连接

       

    四、多对多操作

       

       

       

       

       

  • 相关阅读:
    bzoj4518[Sdoi2016]征途 斜率优化dp
    bzoj3675[Apio2014]序列分割 斜率优化dp
    bzoj3437小P的牧场 斜率优化dp
    bzoj3156防御准备 斜率优化dp
    bzoj1911[Apio2010]特别行动队 斜率优化dp
    bzoj5100 [POI2018]Plan metra 构造
    bzoj1597[Usaco2008 Mar]土地购买 斜率优化dp
    刷题总结——Middle number(ssoj 优先队列)
    刷题总结——doing homework again(hdu1789)
    NOIP2017赛前模拟(3):总结
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8975561.html
Copyright © 2020-2023  润新知