检索查询集相关数据
Retrive queryset's related data
我有以下型号类:
class User(models.Model):
...
class Book(models.Model):
...
class WishListRelationship(models.Model):
user = models.ForeignKey(User, db_index=True, blank=False, null=False, related_name='wishlist', on_delete=CASCADE)
book = models.ForeignKey(Book, blank=False, null=False, on_delete=CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
然后,我想通过一次调用数据库从用户那里获取图书的查询集。如果这样做:
request.user.wishlist.select_related('book').all()
然后我有了 WishListRelationship 的查询集,但我只想获取书籍,所以我尝试执行以下操作:
Book.objects.annotate(wished_books_ids=request.user.wishlist.all().values_list('book_id', flat=True)).filter(id__in=F('wished_books_ids'))
但我没有实现我想要的,即在 INNER JOIN 中获取相关书籍的列表。我该怎么做?
提前致谢
你不需要弄那么复杂,你可以查询:
Book.objects.filter(<b>wish_list_relationship__user=request.user</b>)
我有以下型号类:
class User(models.Model):
...
class Book(models.Model):
...
class WishListRelationship(models.Model):
user = models.ForeignKey(User, db_index=True, blank=False, null=False, related_name='wishlist', on_delete=CASCADE)
book = models.ForeignKey(Book, blank=False, null=False, on_delete=CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
然后,我想通过一次调用数据库从用户那里获取图书的查询集。如果这样做:
request.user.wishlist.select_related('book').all()
然后我有了 WishListRelationship 的查询集,但我只想获取书籍,所以我尝试执行以下操作:
Book.objects.annotate(wished_books_ids=request.user.wishlist.all().values_list('book_id', flat=True)).filter(id__in=F('wished_books_ids'))
但我没有实现我想要的,即在 INNER JOIN 中获取相关书籍的列表。我该怎么做?
提前致谢
你不需要弄那么复杂,你可以查询:
Book.objects.filter(<b>wish_list_relationship__user=request.user</b>)