Ошибка валидации DecimalField, возвращает неверное значение Django
В одной из моих форм есть поле DecimalField, в которое пользователь вводит цену.
Допустим, пользователь вводит 11.00, теперь, когда я получаю его как в (priceform.clean_data), он возвращает
Decimal('11.00')
так это выглядит
price = Decimal('11.00')
что вызывает ошибку валидации, когда я пытаюсь вставить его в базу данных.
Я не нахожу никаких решений для этого
models.py
class Bid(models.Model):
title = models.CharField(max_length=64, blank=True)
date_time = models.DateTimeField(default=timezone.now, blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
user = models.CharField(max_length=64)
forms.py:
class BidForm(ModelForm):
class Meta:
model = Bid
fields = ['price']
views.py:
if request.method == "POST":
bidform = BidForm(request.POST)
if bidform.is_valid():
price = bidform.cleaned_data['price']
bid = Bid.objects.create(title=title, price=bidform, user=username)
bid.save()
price
должен быть price
, а не bidform
:
if request.method == 'POST':
bidform = BidForm(request.POST, request.FILES)
if bidform.is_valid():
bid = Bid.objects.create(
title=title,
price=bidform.cleaned_data['price'],
user=username
)
Однако вы можете позволить форме сделать всю работу:
if request.method == 'POST':
bid = Bid(
title=title,
user=username
)
bidform = BidForm(request.POST, request.FILES, instance=bid)
if bidform.is_valid():
bid = bidform.save()