在 django 中,如何使用 postgresql 对 jsonb 中的一个 int 字段和两个 float 字段求和

in django ,how to sum a int field and two float field in jsonb using postgresql

我有这样一个模型:

class Priority(models.Model):
    base = models.FloatField(default=0)
    job = models.JSONField()
    users = models.JSONField()

并且 jobusers 相似。

喜欢工作 = {'a':1,'b':2},用户 = {'c':3,'d':4}

我要求和(base + job__a + users__c)

过滤语句怎么写,

原始 sql 也很好。

谢谢

你应该完成这个(更新):

    queryset = Priority.objects.annotate(
        a=Coalesce(
            Cast(KeyTextTransform('a', 'job'), output_field=FloatField()),
            Cast(V(0.0), output_field=FloatField())
        ),
        c=Cast(KeyTextTransform('c', 'users'), output_field=FloatField()),
    ).annotate(
        sum=Sum(
            F('base') + F('a') + F('c'), output_field=FloatField() 
        )
    )

    for item in queryset:
        print(item.sum)