2012-07-10 82 views
1

我有可能在-20价值观和+20范围内选择一个选择框:'+' 在Django形式

class MyForm(forms.ModelForm): 
    class Meta: 
     i0=xrange(-20, 20, 0.25) 
     c = tuple(("%g" % x , "%g" % x) for x in i0) 
     model = MyModel 
     widgets = { 
      'my_field' : forms.Select(choices=c), 

     } 

输出是:

<select> 
    <option value="-20">-20</option> 
    <option value="-19.75">-19.75</option> 
    <option value="-19.5">-19.5</option> 
    <option value="-19.25">-19.25</option> 
    <option value="-19">-19</option> 
    . 
    . 
    . 
    <option value="19">19</option> 
</select> 

但我希望有一个' +'符号的正数字。 i0=xrange(-20, +20, 0.25)没有解决问题。我如何在选项中加正号的'+'符号?

在此先感谢

回答

2

没有获得一台机器与Python我不能测试,但你应该能够做到:

c = tuple(("%g" % x , "%+g" % x) for x in i0) 

http://docs.python.org/release/3.0/library/stdtypes.html#old-string-formatting-operations

也应该在更早的Python版本工作

编辑: -删除零值的+

c = tuple(("%g" % x , "%+g" % x) for x in i0 if x != 0 else ("0", "0")) 
+0

我以前试过这个,但是这个加+号为0.谢谢 – TheNone 2012-07-10 07:07:32

+0

@TheNone我会说这是预期的。你可以特别指出“0”,所以它没有。 *编辑: - 更新后的例子* – 2012-07-10 07:13:23

+0

你是对的。谢谢詹姆斯 – TheNone 2012-07-10 07:15:44

0

将此字段定义为字符,但在整数中进行验证。这应该是快速的解决方案