0
以下代碼是有效的,直到Django的1.5:forms.CharField上位置參數扼流圈從在Django 1.6
from django import forms
f = forms.CharField('f')
從1.6起這是無效的並且在下面的消息的結果:
File "lib/python2.7/site-packages/django/forms/fields.py", line 202, in __init__
self.validators.append(validators.MaxLengthValidator(int(max_length)))
ValueError: invalid literal for int() with base 10: 'f'
Django的文檔不會解釋返回到v1.2的位置參數。我需要升級具有同樣的結構(這也是在很多例子中發現在互聯網上)代碼:
sender = forms.EmailField('sender', label=_(u'Sender'))
什麼是處於第一位置的文字參數的功能?它可能是初始值嗎?
我用來演示行爲的代碼應該說明我正在測試表單字段,而不是模型字段。 max_length是一個kwarg,所以它沒有位置。 fileds的__init__沒有這個。 djagno 1.5和1.6之間的差異可以從CharField的__init__上的1-6從int(max_length)調用MaxLengthValidator。 1.6之前。它按原樣使用了max_length。 – rhoerbe
是的,你是對的,它是一個kwarg,但它也有一個位置。查看CharField的__init__1方法:def __init __(self,max_length = None,min_length = None,* args,** kwargs):'這樣做:'forms.CharField('f')'清楚地設置'' f''到'max_length'。 – jproffitt
在1.6之前,它只是按照原樣傳遞了max_length。但是,這顯然確實將字符串傳遞給它。儘管以前沒有失敗,但它仍然不是「正確的」。 – jproffitt