سؤال

I wonder if someone can help me. I'm explore deform and colander in a new project and was following the documentation about subclassing SchemaNode. However, whilst the documentation states that

subclass can define the following methods and attributes: preparer, validator, default, missing, name, title, description, widget, and after_bind.

when I define title, it doesn't seem to come through. Here is some example code that I'm using:

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()

However, when the form is rendered the label for the field is "Location Id" not "Location" as per the title defined in SchemaNode. If instead I write:

class PersonSchema(colander.Schema):

    location_id = LocationSchemaNode(title="Location")

Then all appears as I want, but the documentation seems to state I don't need to do this, and if I do it kind of defeats the point of pre-defining a SchemaNode if I have to keep defining fields.

Am I missing something, or is deform doing something that it shouldn't be (I doubt that is going to be the case). Any help is much appreciated.

Keith

هل كانت مفيدة؟

المحلول

This appears to be a bug that was fixed: https://github.com/Pylons/colander/pull/183

Also, the patch seems to be in the latest available release of colander so an update to the latest version should fix this issue.

Correction:

The example given in that PR exactly matches this question, but the fix given didn't actually fix that exact issue! So, I filed another PR to fix that issue and used the example given in #183 as the test. You can manually patch your own copy if you can't wait for the fix to be introduced into the repo or the next release.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top