在 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()
并且 job
和 users
相似。
喜欢工作 = {'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)
我有这样一个模型:
class Priority(models.Model):
base = models.FloatField(default=0)
job = models.JSONField()
users = models.JSONField()
并且 job
和 users
相似。
喜欢工作 = {'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)