невозможно изменить десятичное значение после его установки (Django) - PullRequest
0 голосов
/ 29 февраля 2020

Как гласит заголовок, я могу обновить числовое значение, но не десятичное, если я установлю его на 11,11, я не могу изменить его на 11,12, но могу изменить на 12,11

модели

from django.db import models


price = models.DecimalField(max_digits=6, decimal_places=2)

view

from django.contrib.auth import forms
from django.shortcuts import render, redirect



def consumable_update(request, pk):
    current_consumable = get_object_or_404(models.Consumables, pk=pk)
    edit_consumable_form = forms.EditConsumableForm(request.POST, name=current_consumable.name, price=current_consumable.price)
    if request.method == 'POST':
        if edit_consumable_form.is_valid():
            name = edit_consumable_form.cleaned_data['name']
            price = edit_consumable_form.cleaned_data['price']
            if models.Consumables.objects.filter(Q(name=name) & ~Q(id=current_consumable.id)).exists():
                messages.add_message(request, messages.INFO, _('إسم الخامة مضاف من قبل بالفعل'))
            else:
                current_consumable.name = name
                current_consumable.price = price
                current_consumable.save()
                messages.add_message(request, messages.INFO, _('تم تعديل الخامة بنجاح'))
                return redirect('consumable_details', pk=current_consumable.id)
    else:
        edit_consumable_form = forms.EditConsumableForm(name=current_consumable.name, price=current_consumable.price)
    context = {
         'current_consumable': current_consumable,
         'edit_consumable_form': edit_consumable_form,
    }
    return render(request, 'consumable_update.html', context)

forms.py

class EditConsumableForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.name = kwargs.pop("name")
        self.price = kwargs.pop("price")
        super(EditConsumableForm, self).__init__(*args, **kwargs)
        self.fields['name'].widget.attrs = {'value': self.name}
        self.fields['price'].widget.attrs = {'value': self.price}

    name = forms.CharField(widget=forms.TextInput)
    price = forms.DecimalField(widget=forms.NumberInput)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...