zoukankan      html  css  js  c++  java
  • Django 模型一对一,一对多,多对多的正反查询

    • 先上示例模型
      • 一对一的情况
    class A(models.Model):
        name = models.CharField(max_length=30, blank=True)
        ida = models.CharFileld(max_length=30, blank=True)
    
    class B(models.Model):
        name = models.CharField(max_length=30, blank=True)
        idb = models.CharField(max_length=30, blank=True)
        a = models.OneToOneField(to="A", on_delete=models.CASCADE,related_name='a')

    a_queryset = A.objects.get(id=1)
    b = a_queryset.b
    b_queryset = B.objects.get(id=1)
    a = b_queryset.a

    or

    ida = A.objects.filter(id=1).values('a__ida', 'name')
      • 一对多的情况
    class A(models.Model):
        name = models.CharField(max_length=30, blank=True)
        ida = models.CharFileld(max_length=30, blank=True)
    
    class B(models.Model):
        name = models.CharField(max_length=30, blank=True)
        idb = models.CharField(max_length=30, blank=True)
        a = models.ForeignKey(to="A", on_delete=models.CASCADE,related_name='a')

    正查
    a_id = B.objects.get(id=1).a
    反查
    b_id= A.objects.get(id=1).a.all().values()
    idb= A.objects.filter(id=1).values('a__idb') 这里的 a ☞
    related_name='a'

    没有related_name属性时
    b_id = A.objects.get(id=1).b_set.all().values() 采用类名小写_set的方式
      • 多对多的情况
    class A(models.Model):
        name = models.CharField(max_length=30, blank=True)
        ida = models.CharFileld(max_length=30, blank=True)
    
    class B(models.Model):
        name = models.CharField(max_length=30, blank=True)
        idb = models.CharField(max_length=30, blank=True)
        a = models.ManyToManyField(to="A")

    b= B.objects.get(nid='1')
    a= b.a.all()
    
    a= A.objects.get(id='1')
    b= a.b_set.all()  有related_name属性类似上面

     随手记录,不足之处请多指教!!!

  • 相关阅读:
    maven配置成功,但显示'cmd' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    java ee 4周
    java 3周
    XML
    web后台过程
    【转】Maven详细
    HDFS 客户端读写操作详情
    HDFS DataNode详解
    HDFS NameNode详解
    CSS的四种样式
  • 原文地址:https://www.cnblogs.com/leisunny/p/13936776.html
Copyright © 2011-2022 走看看