поле суммы суммы в модели с использованием другой модели в django - PullRequest
0 голосов
/ 19 января 2020

У меня есть три модели: пользователь, кампания и пожертвование. Модель пожертвования имеет сумму пожертвования, пожертвованную каждым пользователем против каждой кампании.

Модель кампании

class Campaign(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    # this is many to one relationship, on_deleting user, profile will also be deleted
    campaign_title = models.CharField(max_length=200, blank=True)

Модель пожертвований

class Donation(models.Model):
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    # this is many to one relationship, on_deleting user, user's donation details will be set to NULL
    campaign = models.ForeignKey(Campaign, on_delete=models.DO_NOTHING)
    donation_amount = models.IntegerField()

views.py file

def landing_page(request):
    # campaigns = Campaign.objects.all().order_by('-id')
    campaigns = Campaign.objects.all().order_by('-id')

    ////DO SOMETHING HERE TO SHOW TOTAL DONATION AGAINST EACH CAMPAIGN////

    return render(request, 'core/landing_page.html',{'campaigns':campaigns})

Используя текущий файл views.py, я могу отобразить все кампании. Как передать общее пожертвование по каждой кампании в файл html?

1 Ответ

2 голосов
/ 19 января 2020

Вы можете использовать аннотацию следующим образом.

from django.db.models import Sum

campaigns = Campaign.objects.annotate(donations=Sum('donation__donation_amount'))

Каждый объект кампании будет иметь атрибут donations со значением, равным сумме общих пожертвований для этой кампании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...