【问题标题】:Retrive queryset's related data检索查询集相关数据
【发布时间】:2019-10-06 05:48:26
【问题描述】:

我有以下模型类:

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 中获取相关书籍的列表。我怎么能这样做?

提前致谢

【问题讨论】:

    标签: django django-models django-rest-framework django-queryset django-filter


    【解决方案1】:

    你不需要让它复杂,你可以查询:

    Book.objects.filter(<b>wish_list_relationship__user=request.user</b>)

    【讨论】:

    • 太棒了!这正是我想要的,非常感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2011-09-22
    相关资源
    最近更新 更多