How can I get the proper “sumvalue” in the example? (which I only know how to represent in SQL):
class Addition(models.Model): location = models.ForeignKey(Place, ...) a = models.DecimalField(...) b = models.DecimalField(...) @property def c(self): return self.a + self.b class Result(models.Model): place = models.ForeignKey(Place, ...) # I only know how to represent in SQL sumvalue = SELECT c FROM Addition WHERE location = place
Advertisement
Answer
In your case, c is not a field, but a property.
You can call it on an instance:
Addition.objects.all()[0].c()
Now for what you’re trying to do, I really recommand you use annotate.
from django.db.models import F Addiction.objects.annotate(sum_a_b=F('a')+F('b'))
You then have an additional field in your query called sum_a_b
.