• related_name和related_query_name举例区别


    举例,一

    class UserInfo(models.Model):
        nickname = models.CharField(max_length=32)
        username = models.CharField(max_length=32)
        password = models.CharField(max_length=64)
    
        gender_choices = (
            (1,'男'),
            (2,'女'),
        )
        gender = models.IntegerField(choices=gender_choices)
    
    ralated_query_name 
    class U2U(models.Model):
        g = models.ForeignKey('UserInfo',ralated_query_name='a')
        b = models.ForeignKey('UserInfo',ralated_query_name='b')
    
       # ralated_query_name
    
      #  obj.对象男.b_set.all()
      #  obj.对象女.a_set.all()
    

    ralated_name
    class U2U(models.Model):
        g = models.ForeignKey('UserInfo',ralated_name='a')
        b = models.ForeignKey('UserInfo',ralated_name='b')
    
       # ralated_name
    
      #  obj.对象男.b.all()
      #  obj.对象女.a.all()
    

     回顾以往例子:反向查找别名替换

    class UserType(models.Model):
        title = models.CharField(max_length=32)
    
    class User(models.Model):
        username = models.CharField(max_length=32)
        ut = models.ForeignKey('UserType',related_name='xxx')
    
    ## related_name='xxx'
    反向:小写表名user_set ===>xxx
    ## related_query_name = 'xxx'
    反向:user_set==>xxx_set

    推荐用:
     ut = models.ForeignKey('UserType',related_name='users')

        obj.users

    
    
    #M2M自关联的特性:
    ##1,obj.m  前一列
    ##2,obj.userinfo_set 后一列
    
    obj = models.UserInfo.objects.filter(id=1).first()
    
    #男---前一列
    obj.m    =>select xx from xx where  from_userinfo_id = 1
    
    #女----后一列
    obj.userinfo_set =>select xx from xx where to_userinfo_id = 1
    

      

    定义:

    前面列:男生ID

    后面列:女生ID

    应用:  

    #男生obj
    obj = models.UserInfo.objects.filter(id=1).first()
    # 根据男生id=1,查找关联的所有女生
    obj.m.all()
     
    
    #女生obj
    obj = models.UserInfo.objects.filter(id=4).first()
    #根据女生id=4,查找关联的所有男生
    obj.userinfo_set.all()
    

      # FK自关联

    
    
    
    
    
    
    
    
    

     

  • 相关阅读:
    安装固态硬盘,小米笔记本13.3
    glut相关函数说明
    qt 显示中文
    简述FPS的计算方法
    【BZOJ3527】【ZJOI2014】—力(FFT)
    【BZOJ3653】【洛谷P3899】—谈笑风生(子弹滞销+长链剖分)
    【COGS2652】—天文密葬法(分数规划+长链剖分)
    【BZOJ3611】【HeOI2014】—大工程(虚树+dp)
    【BZOJ1758】【WC2010】—重建计划(点分治+分数规划)
    【BZOJ4765】—普通计算姬(分块+BIT)
  • 原文地址:https://www.cnblogs.com/catherine007/p/8997955.html
Copyright © 2020-2023  润新知