0

注釈の結果に依存するクエリセットでフィールドを取得しようとしています。注釈付きクエリセットで 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")
    )

ここで、.extra を使用しようとしている平均価格を取得したいと考えています。それらは機能していないようです。(生成されたSQLクエリを見てきました)。

#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")
    )
4

0 に答える 0