我有一个带有price字段的订单模型。我希望我的表单将这个字段的值限制在0.0到1.0之间,但我不希望实际的模型受到这样的限制。
目前我的表单代码是:
class OrderForm(ModelForm):
class Meta:
model = Order
fields = ('stock', 'order', 'volume', 'price')下拉输入将是理想的,但我不知道如何通过Django表单来实现。
发布于 2011-06-25 05:28:19
class OrderForm(ModelForm):
price = forms.ChoiceField(choices=PRICE_CHOICES)其中PRICE_CHOICES是元组的元组,其形式为:
PRICE_CHOICES = (
(value, display),
(value, display),
...
)实际上,由于您正在处理线性级数,您甚至可以使用一些语法糖:
price_choices = [('%.2f' % (x*0.1), '$%.2f' % (x*0.1)) for x in range(0,11)]唯一的区别是我在显示值前面抛出了一个美元符号,但您得到了要点。
发布于 2011-06-25 05:51:47
我的方法是,在表单的init方法中修改自动生成的字段,方法是添加一个验证器来检查表单字段的值是否在您想要的范围内。
Class OrderForm(forms.ModelForm):
def __init__(*arg, **kwargs):
super(OrderForm,self).__init__(*args, **kwargs)
self.fields['price'].validators = [valid_price_range]
def valid_price_range(value):
if value < 0 or value > 1:
throw ValidationError(u'%s is not between 0 and 1' % value)https://stackoverflow.com/questions/6473895
复制相似问题