dajaxiceを使用してモデルフォームをリアルタイムで検証するジェネリック関数を作成したいと思います。
これが私がしたことです:
exafeeds / ajax.py
from django.core.exceptions import ValidationError
from django.utils import simplejson
from dajaxice.decorators import dajaxice_register
def gen_validate_model(models_module):
@dajaxice_register
def validate_model(request, model, fields):
errors = {}
tmp_model = getattr(models_module, model)()
for (field, value) in fields.items():
setattr(tmp_model, field, value)
try:
tmp_model.clean_fields()
except ValidationError, err:
errs = err.message_dict
for field in fields:
errors[field] = errs.get(field)
return simplejson.dumps(errors)
return validate_model
アカウント/ajax.py
from exafeeds.ajax import gen_validate_model
import accounts.models
validate_model = gen_validate_model(accounts.models)
そして、js呼び出し:
Dajaxice.accounts.validate_model(check_validity_callback, {
'model': 'User',
'fields': {
'username': username,
'email': email
}
});
しかし、Dajaxice.accountsが未定義であるというJSエラーが発生した場合。
dajaxice_registerデコレータは明らかに間違った場所に配置されていますが、どこに配置すればよいですか?
編集。dajaxice_registerデコレータを次のように置き換えようとしました。
validate_model = gen_validate_model(accounts.models)
validate_model = dajaxice_register(validate_model)
しかし、それは何も変わりませんでした