美文网首页
对象关联查询(正向,反向)

对象关联查询(正向,反向)

作者: 钱塘 | 来源:发表于2017-08-18 18:29 被阅读150次

    关联查询

    #coding=utf8
    
    from django.db import models
    
    # Create your models here.
    
    
    # coding=utf8
    
    from django.db import models
    
    
    # Create your models here.
    
    
    class Book(models.Model):
        title = models.CharField(max_length=64)
        price = models.IntegerField()
        color = models.CharField(max_length=64)
        page_num = models.IntegerField(null=True)
        publisher = models.ForeignKey("Publisher")     # 外键,从此处进行关联查询
        def __str__(self):
            return self.title.encode("utf-8")
    
    
    class Author(models.Model):
        name = models.CharField(max_length=30)
    
        def __str__(self):
            return self.name.encode("utf-8")
    
    
    # 自己写第三张表 多对多  book - author
    
    class Book2Author(models.Model):
        author = models.ForeignKey("Author")
        book = models.ForeignKey("Book")
    
        # state = models.CharField(max_length=64)
    
        class Meta:
            unique_together = ["author","book"]  # 联合唯一
    
    
    class Publisher(models.Model):
        name = models.CharField(max_length=64)
        city = models.CharField(max_length=63)    # 
    
        def __str__(self):
            return self.city.encode("utf-8")
    
    

    正向查找:从对象按照它的属性查找

    从书本《go》的publisher字段查到出版社,再通过此出版社查到出版社的地址

        ob = models.Book.objects.filter(title="go")[0]
        print(ob.publisher.city)
    
    

    ob即是《go》书的出版社对象

    反向查找:

        ob = models.Publisher.objects.filter(id=2)[0]
        print(ob.book_set.all().values("title"))
    

    反向使用book_set查询,通过values查book的字段,如果需要,还可以使用distinct()去重。

    相关文章

      网友评论

          本文标题:对象关联查询(正向,反向)

          本文链接:https://www.haomeiwen.com/subject/junarxtx.html