首页 > 其他 > 详细

关于Django多变关联查询的orm操作

时间:2019-09-06 23:36:29      阅读:119      评论:0      收藏:0      [点我收藏+]

表间关系主外键约束,主表存在字表的约束字段。

在一对多或者多对多的情况下,可以采用正面查询操作,和反面查询操作。

正面查询,采用主表查询的对象加字表的约束字段。

反向查询用子表的对象用表名小写加set加all方法。

如下实例:

表间关系字段

class Book(models.Model):
    nid=models.AutoField(primary_key=True)
    title=models.CharField(max_length=32)
    price=models.DecimalField(max_digits=8,decimal_places=2)
    pub_date=models.DateField()
    publish=models.ForeignKey(to=Publish,on_delete=models.CASCADE)  #级联删除
    author=models.ManyToManyField(to=Author)

    def __str__(self):
        return self.title

#出版社
class Publish(models.Model):
    nid=models.AutoField(primary_key=True)
    name=models.CharField(max_length=32)
    email=models.CharField(max_length=32)

#作者
class Author(models.Model):
    nid=models.AutoField(primary_key=True)
    name=models.CharField(max_length=32)
    age=models.IntegerField()
    email=models.CharField(max_length=32)
    ad=models.OneToOneField(to=AuthorDetail,on_delete=models.CASCADE)     #级联删除

    def __str__(self):
        return self.name

#作者详情
class AuthorDetail(models.Model):
    nid = models.AutoField(primary_key=True)
    addr=models.CharField(max_length=32)
    tel=models.IntegerField()

查询java这本书的作者的名字和年龄:

正面查询

    # book_obj = models.Book.objects.filter(title__contains=‘Java‘).first()
    # print(book_obj.author.all().values(‘name‘,‘age‘))

王璐写过的书籍名称和价格

反向查询

   # aut_obj = models.Author.objects.filter(name=‘王璐‘).first()
    # print(aut_obj.book_set.all().values(‘title‘,‘price‘))

*****************************************************************************

一对一的表间关系则不需要all方法或者添加_set属性

作者李明的详细信息

正向查询

    # aut_obj = models.Author.objects.filter(name=‘胡文远‘).first()
    # print(aut_obj.ad.addr,aut_obj.ad.tel)

湖北籍的作者信息(此处情况特殊仍旧是一对一)

反向查询

    obj = models.AuthorDetail.objects.filter(addr__contains=湖北).first()
    print(obj.author.name)

 

关于Django多变关联查询的orm操作

原文:https://www.cnblogs.com/wen-kang/p/11478688.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!