一对多 多对多查询

#一对多
publisher = models.ForeignKey(to="Publisher", on_delete=models.CASCADE,related_name="books",null=True )
book_obj = models.Book.objects.all().first()
ret1 = book_obj.publisher  # 和我这本书关联的出版社对象
ret2 = book_obj.publisher.name  # 和我这本书关联的出版社对象
ret = models.Book.objects.filter().values("publisher__name")#根据书查出版社(正向查询)

publisher_obj = models.Publisher.objects.filter(id=3).first()  # 得到一个具体的对象
ret = publisher_obj.books.values_list("title")  # 用这个必须表字段中加 related_name="books"
ret = models.Publisher.objects.filter(id=1).values_list("books__title")# 根据出版社查书(反向查询)


#多对多
books = models.ManyToManyField(to="Book", related_name="authors")
obje_au=models.Author.objects.filter(id=3).values("books__title") #根据作者查书(正向查询)


authors = models.Book.objects.filter(id=3).values("authors__name")#要加related_name="authors"
authors = models.Book.objects.filter(id=3).values("authors__name")#根据书查作者(反向查询)

猜你喜欢

转载自blog.csdn.net/weixin_42506747/article/details/82050352