This is how I finally solved my problem!!!

The following is a copy of my ORM statement:

 Visit.objects.filter(visit_date = mydate).aggregate(total = Sum('visit_payment'))
{'total': Decimal('27')}
 This total is the total of the foreign key ids.  9 records each with a key of 3 = 9 x 3 = 27

The way I solved this problem is to put another variable in the loop where I was printing the records to Reportlab PDF file and I incremented this variable with the value that was being printed. What was being printed was the value from the look-up table so I was able to get a Sum from that.

Here is the code of how I did it: vi = Visit.objects.filter(visit_date = mydate);  vip = 0; for v in vi:; vi_pay = str(v.visit_payment); vip += int(vi_pay)

Here is how the Reportlab is built: Also in the same loop as above I have the lines:  vi_pat = str(v.patient); pa1.drawString(x, y, str(vi_pat)); pa1.drawString(x + 175, y, str(vi_pay))

Each of these are on a separate line in my code.

Hopefully this will help anyone with similar problems.


On Monday, 06 August, 2018 09:35 PM, Matthew Pava wrote:

You need to specify the field of the value in your ORM statement.  I don’t know what your field name is, but this assumes that it is “value”:

aggregate(Sum(‘payment__value’))

*From:*[email protected] [mailto:[email protected]] *On Behalf Of *Gerald Brown
*Sent:* Monday, August 6, 2018 8:29 AM
*To:* Django users
*Subject:* Django ORM aggregate Sum function on foreign key

Greetings:

I am having a problem using the above function.

In my table I have a field payment that is a foreign key to a payment table.

When I try to use aggregate(sum('payment')) it gives me the sum of the foreign key, not the value from the payment table.

Currently I have 9 records in my test DB each one has a foreign key of 3 so I get a sum of 27 not 2,250 that I should be getting.

This table also has a foreign key to the customer table and it returns the customer not the foreign key number.

The thought I had was to make that foreign key an integer field and then the user would have to enter a number instead of selecting it from a list, prone to operator errors,

Any ideas on how I can get the correct totals using ORM.

Thanks

--
You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/c47e4bb7-626c-4b07-9ab5-55d68fe4d566%40googlegroups.com <https://groups.google.com/d/msgid/django-users/c47e4bb7-626c-4b07-9ab5-55d68fe4d566%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/3a17d4eeeb804cc89c4cda5eaca8b050%40ISS1.ISS.LOCAL <https://groups.google.com/d/msgid/django-users/3a17d4eeeb804cc89c4cda5eaca8b050%40ISS1.ISS.LOCAL?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/03e77e95-26b7-01e9-e11b-beca97d16176%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to