Я новичок в django, и я хочу задать вам следующий вопрос.
У меня есть две модели: ежемесячный доход, который отражает мой ежемесячный доход по одной статье, и общий ежемесячный доход, который представляет Сумма всех статей ежемесячного дохода.
Мой models.py выглядит следующим образом:
from django.db import models
from djmoney.models.fields import MoneyField
class Vendite(models.Model):
ricavi_dalle_vendite = models.CharField(max_length=100, editable=True)
ricavi_dalle_vendite_01 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
ricavi_dalle_vendite_02 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
class Totale_Vendite(models.Model):
ricavi_tot_dalle_vendite = models.CharField(max_length=100, editable=True)
ricavi_01 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
ricavi_02 = MoneyField(decimal_places=2,default=0, default_currency='EUR',max_digits=11)
Мои взгляды следующие:
def ricavi_dalle_vendite(request):
items = Vendite.objects.all()
if request.method == 'POST':
form = VenditeModelForm(request.POST)
if form.is_valid():
print("Il form è valido")
new_input = form.save()
else :
form = VenditeModelForm()
data_jan = list(Vendite.objects.aggregate(Sum('ricavi_dalle_vendite_01')).values())[0]
data_feb = list(Vendite.objects.aggregate(Sum('ricavi_dalle_vendite_02')).values())[0]
jan = data_jan
feb = data_feb
total_income = Totale_Vendite(ricavi_01=jan, ricavi_02=feb, id=1)
total_income = Totale_Vendite(ricavi_01=jan, ricavi_02=feb, id=1)
total_income.save()
context= {
"form": form,
'items': items,
}
return render(request, "app/vendite.html", context)
Код работает хорошо, но когда я собираюсь удалить первые элементы, вставленные в модели "Vendite" django, выдает ошибку "Сбой NOT NULL": app_totale_vendite.ricavi_01.
Я думаю, что ошибка связана с моими ограничениями "id = 1" в моих представлениях, но мне нужно иметь в модели Totale_vendite только строку, которая обновляется, если я добавляю или удаляю элемент ежемесячного дохода.
Как можно решить эту проблему ??