Подклассы дуршлагов SchemaNode
Интересно, кто-нибудь может мне помочь? Я исследую деформацию и дуршлаг в новом проекте и следил за документацией о создании подклассов SchemaNode. Тем не менее, хотя в документации говорится, что
Подкласс может определять следующие методы и атрибуты: подготовитель, валидатор, по умолчанию, отсутствует, имя, заголовок, описание, виджет и after_bind.
когда я определяю заголовок, он, кажется, не проходит. Вот пример кода, который я использую:
class LocationSchemaNode(colander.SchemaNode):
schema_type = colander.Int
title = 'Location'
missing = None
validator = colander.Range(
min=1,
min_err='Please select a valid location'
)
class PersonSchema(colander.Schema):
location_id = LocationSchemaNode()
Однако, когда форма визуализируется, метка для поля будет "Location Id", а не "Location" согласно заголовку, определенному в SchemaNode. Если вместо этого я пишу:
class PersonSchema(colander.Schema):
location_id = LocationSchemaNode(title="Location")
Тогда все появляется так, как я хочу, но в документации, похоже, говорится, что мне не нужно этого делать, и если я делаю это, то это отчасти лишает смысла предопределение SchemaNode, если мне нужно продолжать определять поля.
Я что-то упускаю или деформирую, делая что-то, чего не должно быть (я сомневаюсь, что так и будет). Буду признателен за любую оказанную помощь.
Кит
1 ответ
Это, похоже, ошибка, которая была исправлена: https://github.com/Pylons/colander/pull/183
Кроме того, похоже, что патч находится в последней доступной версии дуршлага, поэтому обновление до последней версии должно решить эту проблему.
Исправление:
Пример, приведенный в этом PR, точно соответствует этому вопросу, но данное исправление фактически не решает эту проблему! Итак, я подал другой PR, чтобы исправить эту проблему, и использовал пример, приведенный в #183, в качестве теста. Вы можете вручную исправить свою собственную копию, если не можете дождаться, когда исправление будет введено в репозиторий или следующий выпуск.