Django - SubQuery e function F()



我有两个模型(作者和书籍(。我想在作者模型中为每个作者注释最高的图书价格(以便以后进行操作(。我想使用F((函数创建一个带有内部子查询的查询,但问题是F((引用了图书模型,但我想引用作者模型。我将用一个例子来说明这一点。模型如下所示:

class author:
authorID = models.AutoField(primary_key = True, auto_created = True, unique = True)
name = models.CharField(max_length=100)
surname = models.CharField(max_length=100)
class book:
ownerID = models.ForeignKey(author, on_delete = models.CASCADE, related_name='hook')
title = models.CharField(max_length=100)
price = models.IntegerField()

有问题的查询如下:

value = author.objects.annotate(maxPrice = (book.objects.filter(ownerID = F('authorID')).order_by('-price') [0]))

F("authorID"(被引用到书籍数据库,因此Django返回一个错误,但我想将其引用到作者数据库以实现我的目标。我该怎么做?感谢

我认为您需要使用OuterRef('authorID')而不是F('authorID')

最新更新