Django (dojango) FieldRegex не передается - PullRequest
0 голосов
/ 25 августа 2011

Я знаю, что на 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)

И я использую его в своих формах .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" />

Может кто-нибудь сказать мне, что я могу делать неправильно?

Ответы [ 2 ]

1 голос
/ 29 августа 2011

После трех дней отказов я должен отправить regex и js_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 голосов
/ 25 августа 2011

Ошибка связана с 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)
...