я следовал этому example, но я изменил его немного, чтобы удовлетворить мой проектDeform Inter-Field Validation не выделяя поле
Это то, что у меня есть:
class AgentFormValidation(object):
def __init__(self, context, request):
self.context = context
self.request = request
def __call__(self, form, value):
number = value['identity_information']['number']
print validateID(number)
type = value['identity_information']['type']
q = sqlahelper.get_session().query(Agents.id_number).filter(Agents.id_number == number).first()
if type == "IDNumber":
if not validateID(number):
if q:
exc = colander.Invalid(form["identity_information"], "ID Number %s already exists in Database" % number)
exc.number = "ID Number already exists "
raise exc
else:
exc = colander.Invalid(form["identity_information"], "ID Number %s is not a valid SA ID Number" % number)
exc.number = "Invalid ID number"
raise exc
elif type == "Passport":
if q:
exc = colander.Invalid(form["identity_information"], "Passport number %s already exists in Database" % number)
exc.number = "Passport number already exists"
raise exc
def gen_agent_schema_form(self):
_but = ('create agent',)
_title = "Create Agent"
if not self.context.__is_new__:
_but = ('update agent',)
_title = "Agent Details"
deals = []
if self.context.ou:
deals = [(deal.id, str(deal)) for deal in self.context.ou[0].org_deals]
schema = Agent(validator=AgentFormValidation(self.context, self.request), title=_title).bind(deals=deals)
form = Form(schema, buttons=_but)
return schema, form
Валидация работает просто отлично. Он просто не хочет выделять элемент.
Когда я заменяю:
exc.number = "ID Number already exists"
с
exc['number'] = "ID Number already exists"
Это делает блик, но Выделяет самый первый элемент на форме, которая является first_name
, который также является неправильным.
Я чувствую, что мне не хватает чего-то маленького.
UPDATE
Так что я играл немного, когда я делаю:
exc = colander.Invalid(form, "ID Number %s already exists in Database" % number)
exc["identity_information"] = "ID Number already exists "
raise exc
Я получаю предупреждение окно сообщения (не JS оповещения) выше соответствующее поле:
Вместо этого мне нужно выделить поле, как в примере выше.
Почему голосующий ???????? – Renier