Преобразование входного значения в отрицательное перед сохранением
Пожалуйста, у меня есть модель и представление ниже, но мне нужна ситуация, в которой любое значение, введенное в поле количества, будет сохранено как отрицательное число в моей базе данных.
#view.py
def post(self, request):
receiveform = ReceiveForm(request.POST or None)
stockform = StockForm(request.POST or None)
if request.method == 'POST':
if receiveform.is_valid() and stockform.is_valid():
receiveform.save()
stockform.save()
messages.success(request,('Data save succefully'))
return redirect('dashboard')
else:
print(receiveform.errors)
receiveform = ReceiveForm(request.POST or None)
context = {
'receiveform':receiveform,
'stockform':stockform,
}
return render(request, 'storesapp/receives.html', context)
#model.py
class Receives(models.Model):
date = models.DateField(default=now)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
quantity = models.IntegerField(default='0', blank=True, null=True)
Вы можете изменить любые атрибуты модели до фактического сохранения формы с помощью commit=False
. Замените следующую строку
receiveform.save()
с этим
receives_instance = receiveform.save(commit=False)
receives_instance = -abs(receives_instance.quantity)
receives_instance.save()
abs
гарантирует, что любое отрицательное значение, представленное пользователем, не будет случайно преобразовано в положительное.