Для того чтобы получить сумму значений из определенной колонки в базе данных в Django, можно воспользоваться методом aggregate и функцией Sum. Например, для модели Invoice, которая представляет накладные, чтобы получить сумму всех значений из колонки amount, можно сделать следующее:
```python
from django.db.models import Sum
from myapp.models import Invoice
total_amount = Invoice.objects.aggregate(total_amount=Sum('amount'))['total_amount']
```
Здесь 'amount' - это название колонки, из которой мы хотим получить сумму, 'total_amount' - название переменной, в которую будет сохранено значение суммы.
Чтобы добавить итоговую сумму всех накладных в результате расчета ЗП к таблице в профиле человека, можно сделать следующее:
1. Создать модель для профиля человека с полем total_earnings, в котором будет храниться общий заработок за все время.
```python
from django.db import models
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
total_earnings = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
```
2. При расчете ЗП сумму добавлять к total_earnings:
```python
from myapp.models import Profile, Invoice
def calculate_salary(user):
total_amount = Invoice.objects.aggregate(total_amount=Sum('amount'))['total_amount']
profile = Profile.objects.get(user=user)
profile.total_earnings += total_amount
profile.save()
```
Теперь при вызове функции calculate_salary для определенного пользователя, его общий заработок будет автоматически обновляться.