2011-08-25 43 views
0

我知道dojango上沒有太多的stackoverflow,但我想我會問。Django(dojango)FieldRegex沒有通過

Dojango介紹RegexField如下:

class RegexField(DojoFieldMixin, fields.RegexField): 
    widget = widgets.ValidationTextInput 
    js_regex = None # we additionally have to define a custom javascript regexp, because the python one is not compatible to javascript 

    def __init__(self, js_regex=None, *args, **kwargs): 
     self.js_regex = js_regex 
     super(RegexField, self).__init__(*args, **kwargs) 

,我使用它所以我forms.py:

post_code = RegexField(js_regex = '[A-Z]{1,2}\d[A-Z\d]? \d[ABD-HJLNP-UW-Z]{2}') 
# & 
post_code = RegexField(attrs={'js_regex': '[A-Z]{1,2}\d[A-Z\d]? \d[ABD-HJLNP-UW-Z]{2}'}) 

不幸的是,這些都讓我:

TypeError: __init__() takes at least 2 arguments (1 given) 

如果我使用以下內容:

post_code = RegexField(regex = '[A-Z]{1,2}\d[A-Z\d]? \d[ABD-HJLNP-UW-Z]{2}') 

我得到以下HTML:

<input name="post_code" required="true" promptMessage="" type="text" id="id_post_code" dojoType="dijit.form.ValidationTextBox" /> 

誰能告訴我,我可能是做錯了?

回答

1

後啃書離開我富爾德,你需要發送regexjs_regex的三天,雖然regex不使用:

post_code = RegexField(
    regex='', 
    required = True, 
    widget=ValidationTextInput(
     attrs={ 
      'invalid': 'Post Code in incorrect format', 
      'regExp': '[A-Z]{1,2}\d[A-Z\d]? \d[ABD-HJLNP-UW-Z]{2}' 
     } 
    ) 
) 

[噢!並且你還需要聲明該部件爲ValidationTextInput]

0

錯誤與super().__init__呼叫有關。如果fields.RegexField是標準的Django RegexField,那麼它需要regex關鍵字參數,如文檔所述。既然你沒有通過它,你得到TypeError。如果它應該與js_regex相同,那麼在超級通話中傳遞它。

def __init__(self, js_regex, *args, **kwargs): 
    self.js_regex = js_regex 
    super(RegexField, self).__init__(regex, *args, **kwargs) 
+0

我試過這個,但不幸的是我仍然得到相同的錯誤:( – Sevenearths