Python 如何使用.extra with.annotate

Python 如何使用.extra with.annotate,python,database,django,django-models,django-queryset,Python,Database,Django,Django Models,Django Queryset,我试图在queryset中获取一个字段,该字段取决于注释的结果。我尝试在带注释的queryset上使用extra,但似乎不起作用 假设我的模型如下所示: class Foo(models.Model): name = models.CharField(...) class FooData(models.Model): foo = models.ForeignKey(Foo) sales = models.PositiveIntegerField() items_

我试图在queryset中获取一个字段,该字段取决于注释的结果。我尝试在带注释的queryset上使用extra,但似乎不起作用

假设我的模型如下所示:

class Foo(models.Model):
    name = models.CharField(...)

class FooData(models.Model):
    foo = models.ForeignKey(Foo)
    sales = models.PositiveIntegerField()
    items_sold = models.PositiveIntegerField()
我有一个Foo对象的查询集

some_foos = Foo.objects.filter()
我已经对它进行了注释,以获得FooData的总和

some_foos.object.annotate(
    total_sales=Sum("foodata__sales"),
    total_items_sold=Sum("foodata__items_sold")
    )
现在我想得到我试图使用的平均价格。额外。它们似乎不起作用。(我已经查看了生成的sql查询)


你会使用MySQL吗?我发现了这条评论,我认为这与你的问题有关。我已经用sqlite和mysql对此进行了测试。两者都不起作用。我猜如果MySQL不起作用,sqlite也不起作用。
#Wont work, fields not defined yet.
some_foos.object.annotate(
    total_sales=Sum("foodata__sales"),
    total_items_sold=Sum("foodata__items_sold")
    ).extra(select={'price_avg': "total_sales/total_items_sold"}) 

#Wont work, this adds an extra clause in group by
price_avg = "SUM(appname_foodata.sales)/SUM(appname_foodata.items_sold)"
some_foos.object.annotate(
    total_sales=Sum("foodata__sales"),
    total_items_sold=Sum("foodata__items_sold")
    )