Как я могу автоматически создать историю утверждения/отклонения при утверждении запроса или возврата товара?

Мой процесс для этого заключается в том, что они запрашивают элемент через представление запроса проекта и хранится в модели Activity, если запрос был размещен, они могут либо одобрить, либо отклонить его, используя представление одобрения запроса или отклонения запроса. Теперь я хочу создать таблицу истории, которая автоматически сохраняет статус одобрения или отклонения запрошенного элемента после того, как они одобрили/отклонили его, кто одобрил/отклонил его, когда это было сделано.

Models.py

class Activity(models.Model):

Item = models.ForeignKey(Item, on_delete=models.CASCADE, null=True, limit_choices_to={'Quantity__gt': 0})
staff = models.ForeignKey(CustomUser, on_delete=models.CASCADE, null=True, limit_choices_to={'Quantity__gt': 0})
project_site = models.ForeignKey(Projects, on_delete=models.CASCADE, null=True)
Quantity = models.PositiveIntegerField(null=True, default=1,
    validators=[
        MaxValueValidator(100),
        MinValueValidator(1)
    ])
date_created = models.DateTimeField(auto_now_add=True)
is_draft = models.BooleanField(default=True)
request_status = models.IntegerField(default=0,
    validators=[
        MaxValueValidator(3)
    ])
return_status = models.IntegerField(default=0,
    validators=[
        MaxValueValidator(3)
    ])
note = models.TextField(max_length=255, null=True)


class Meta:
    verbose_name_plural = 'Item Request'

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

Views.py

def project_request(request):

activities = Activity.objects.all()
returns = ReturnItem.objects.all()

if request.method == 'POST':
    form = ActivityForm(request.POST)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.staff = request.user
        instance.request_status = 2
        instance.return_status = 2
        instance.save() 
        return redirect('project_request')

else:
    form = ActivityForm()
context={

    'activities' : activities,
    'returns' : returns,
    'form' : form,
    
}

template_name ='project-admin/project-request-items.html'
return render(request, template_name, context)

def request_approve(request, pk):
activities = Activity.objects.get(id=pk)
activities.request_status = 1
activities.save()
return redirect('project_request')

def request_reject(request, pk):
activities = Activity.objects.get(id=pk)
activities.request_status = 0
activities.save()
return redirect('project_request')
Вернуться на верх