Добавление значений из ежемесячного прогресса обновления статуса в назначенный прогресс проекта в django

У меня есть процесс, в котором каждый раз, когда менеджер проекта создает ежемесячное обновление статуса, он должен ввести значение прогресса проекта, теперь я хочу добавить все значения, установленные в этой колонке, в назначенное значение прогресса проекта, и значения, которые складываются, не должны превышать 100.

Models.py

class Projects(models.Model):

id=models.AutoField(primary_key=True)
project_name=models.CharField(max_length=255)
project_manager=models.ForeignKey(CustomUser,on_delete=models.CASCADE, limit_choices_to={'is_project_manager' : True})
client_name=models.ForeignKey(Clients,on_delete=models.CASCADE, null=True)
project_pic=models.ImageField(upload_to='static/website/project-images')
project_start_date=models.DateField(null=True)
project_end_date=models.DateField(null=True)
project_description=models.TextField(null=True)
project_progress = models.PositiveIntegerField(null=True, default=0,
    validators=[
        MaxValueValidator(100),
        MinValueValidator(0)
    ])
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
is_draft = models.BooleanField(default=True)
objects=models.Manager()

class Meta:
    verbose_name_plural = 'Project'

def __str__(self):
    return f'{self.project_name}'



class MonthlyProjectStatus(models.Model):

id=models.AutoField(primary_key=True)
project_name=models.ForeignKey(Projects,on_delete=models.CASCADE)
project_manager=models.ForeignKey(CustomUser,on_delete=models.CASCADE, null=True)
client_name=models.ForeignKey(Clients,on_delete=models.CASCADE, null=True)
attachments = models.FileField(upload_to='static/website/files', null=True)
project_update=models.TextField(null=True)
project_progress=models.PositiveIntegerField(null=True, default=1,
    validators=[
        MaxValueValidator(100),
        MinValueValidator(1)
    ])
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
is_draft = models.BooleanField(default=True)

class Meta: 
    verbose_name_plural = 'Monthly Status'

def __str__(self):
    return f'{self.project_name}'

Forms.py

class ProjectForm(forms.ModelForm): class Meta: model = Projects поля = ['project_name', 'project_manager', 'client_name', 'project_pic', 'project_start_date', 'project_end_date', 'project_description']

class MonthlyStatusForm(forms.ModelForm): 
class Meta:
    model = MonthlyProjectStatus
    fields = ['project_name', 'client_name', 'project_update', 'attachments', 'project_progress']

views.py

def client_monthly_staff(request):

monthly = MonthlyProjectStatus.objects.all()

if request.method == 'POST':
    form = MonthlyStatusForm(request.POST, request.FILES)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.project_manager = request.user
        instance.save()
        project_name = form.cleaned_data.get('project_name')
        messages.success(request, f'{project_name} status has been successfully added.')
        return redirect('client-monthly-staff')
else:
    form = MonthlyStatusForm()

context = {

    'monthly' : monthly,
    'form' : form,
}

template_name = 'main-admin/client-update-monthly-staff.html'
return render(request, template_name, context)
Вернуться на верх