Как обновить значение модели в views.py? - PullRequest
0 голосов
/ 20 марта 2020

Доброе утро, ребята,

Я новичок в django и хочу задать вам следующий вопрос.

У меня в models.py два класса:

class Single_Income(models.Model):

  income_label = models.CharField(max_length=100, editable=True)

  income_jan = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
  income_feb= MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)



class Total_Income(models.Model):

  total_jan = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
  total_feb= MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)

В представлениях у меня есть следующий код:

def ricavi_dalle_vendite(request):
    items = Single_Income.objects.all()
    if request.method == 'POST':
         form = SingleIncomeModelForm(request.POST)
         if form.is_valid():
             print("Il form è valido")
             new_input = form.save()

    else :
        form = SingleIncomeModelForm()

    context= {
        "form": form,
        'items': items,
            }
    return render(request, "app/income.html", context) 

Таким образом, заполнив форму в web_application (URL-адрес "приложение / доход. html"), можно заполнить Single_Income. Теперь я хочу автоматически заполнить модель Total_Income (после сохранения данных модели Single_Income) следующим образом:

Single_Income:


| ____ января ____ | ___ Fab _____ |

| ____ 100 ___ | _____ 100 ____ |

| ____ 100 ____ | ____ 100 ____ |

Total_Income:


| ____ 200 ____ | ____ 200 ____ |

1 Ответ

0 голосов
/ 20 марта 2020

Вы можете создать экземпляр вашего Total_Income, вызвав Total_Income. Например:

from . models import Total_Income, Single_Income
from django.db.models import Sum

def ricavi_dalle_vendite(request):
    items = Single_Income.objects.all()

    if request.method == 'POST':
         form = SingleIncomeModelForm(request.POST)
         if form.is_valid():
             print("Il form è valido")
             new_input = form.save()

             # get sums of income_jan and income_feb for all records in Single_Income
             data_jan = Single_Income.objects.aggregate(Sum('income_jan'))
             data_feb = Single_Income.objects.aggregate(Sum('income_feb'))
             jan = data_jan['income_jan__sum']
             feb = data_jan['income_feb__sum']

             # or, sum the incomes from the form
             data_jan = new_input.aggregate(Sum('income_jan'))
             data_feb = new_input.aggregate(Sum('income_feb'))
             jan = data_jan['income_jan__sum']
             feb = data_jan['income_feb__sum'] 

             # create a Total_Income instance
             total_income = Total_Income(total_jan=jan, total_feb=feb)
             # you must save the instance after creating it if you want it to persist
             total_income.save() 

             context= {
               "form": form,
               'items': items,
               'total_income': total_income
             }

    return render(request, "app/income.html", context) 

Теперь вы можете получить доступ к total_income в своем шаблоне так же, как вы обращались к items.

...