Ошибка валидации 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()
Вернуться на верх