Как я могу автоматически создать историю утверждения/отклонения при утверждении запроса или возврата товара?
Мой процесс для этого заключается в том, что они запрашивают элемент через представление запроса проекта и хранится в модели 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')