Python 如何使django十进制字段小部件(numberinput)以不同的方式递增

Python 如何使django十进制字段小部件(numberinput)以不同的方式递增,python,django,widget,Python,Django,Widget,我允许某人为他的比萨配料定价,我有一个简单的表单,它是默认的DecimalField小部件 models.py: class Topping(models.Model): title = models.CharField(max_length=60) description = models.CharField(max_length=50, blank=True, null=True) price = models.DecimalField(max

我允许某人为他的比萨配料定价,我有一个简单的表单,它是默认的DecimalField小部件

models.py:

class Topping(models.Model):
    title       = models.CharField(max_length=60)
    description = models.CharField(max_length=50, blank=True, null=True)
    price       = models.DecimalField(max_digits=4, decimal_places=2, default=0.00)
forms.py:

class ToppingForm(forms.ModelForm):
    class Meta:
        model = Topping
        fields = ('title', 'price')
到目前为止,这个小部件允许点击向上或向下来提高价格,但默认为0.01或一便士。这是没有用的,我希望他们能够一次跳25美分。我不知道我是否读错了github,但是源代码没有显示任何有趣的内容,比如设置增量的关键字arg:

多谢各位


我认为您可以通过向
NumberInput
小部件添加
step
属性来实现这一点

class ToppingForm(forms.ModelForm):
    class Meta:
        model = Topping
        fields = ('title', 'price')
        widgets = {
            'price': forms.NumberInput(attrs={'step': 0.25}),
        }
@codyc4321 小数点后两位,在
models.py中定义:

YOUR_VAR = models.DecimalField(decimal_places=2, max_digits=4, blank=True, null=True)

请回答几个小问题:你是怎么知道的?django widgets文档没有列出该关键字,当我将其提升到0.50、0.75、1、…2、…3时,我希望它看起来像一个价格。你知道如何强制3.00、4.00等吗?
attrs
关键字是html属性的字典。当呈现为html时,
NumberInput
小部件是一个类型为number的输入元素,
step
是此类输入类型可接受的属性之一。至于强制显示小数点后2位,我认为可以使用javascript来实现。另外,
attrs
关键字在中。当我使用这个Widgets={Widgets={'price':forms.NumberInput(attrs={'step':0.25}),}}格式时,我得到一个错误==>self.input\u type=attrs.pop('type',self.input\u type)TypeError:pop()没有参数(给定2个)
YOUR_VAR = models.DecimalField(decimal_places=2, max_digits=4, blank=True, null=True)