gpt4 book ai didi

python - 在 Django ORM 的单个请求中获取一个相关对象

转载 作者:行者123 更新时间:2023-12-01 04:00:02 25 4
gpt4 key购买 nike

我有这个型号

class Book(models.Model):
title = models.CharField(max_length=255, blank=False, null=False)

class Like(models.Model):
user = models.ForeignKey(User, related_name="like_user", blank=False, null=False)
book = models.ForeignKey(Book, related_name="like_book", blank=False, null=False)
class Meta:
unique_together = ["user", "book"]

我想获取所有书籍并检查当前用户是否喜欢单个请求中的每本书

Book.objects.select_lated('like_book').all()

由于结果太多而无法工作

Book.objects.prefetch_lated('like_book').all()

将缓存like_set,但它将包含对这本书的所有点赞。该用户不仅有一个。

最后我想要一个额外的字段is_liked

books = Book.objects.MAGIC_FETCH('like_book', user=self.request.user).all()
books[0].is_liked

最佳答案

* 已更新以处理评论 *

粗略地说,我认为这就是您会使用的:

Book.objects.annotate(is_liked=Case(When(like__user=self.request.user, then=True), default=False))

关于python - 在 Django ORM 的单个请求中获取一个相关对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com