Я использую плагин формы деформации с пирамидой.Деформация по умолчанию не работает должным образом с классом
Я первый из, у меня модель:
class Manufacturer(Base):
__tablename__ = 'manufacturers'
id = Column(Integer, primary_key=True)
name = Column(Unicode, nullable=False, unique=True)
image_id = Column(Integer, ForeignKey('images.id'))
product = relationship('Product', backref='manufacturer')
@classmethod
def _choices(cls):
choices_query = DBSession.query(cls).\
order_by(asc(Manufacturer.name)).all()
return [(ch.id, ch.name) for ch in choices_query]
Теперь на мой взгляд, у меня есть код деформироваться, это работает отлично для добавления новых записей.
class EditMattingSchema(colander.MappingSchema):
name = colander.SchemaNode(colander.String(),
default=product.name)
manufacturer = colander.SchemaNode(colander.String(),
widget = widget.SelectWidget(values=Manufacturer._choices()))
Теперь это создает мой html правильно, и поле выбора отлично отображается.
Однако, когда я использую опцию по умолчанию, например:
product = Session.query(Product).\
filter(Product.slug == 'foo').first()
default_id = product.manufacturer_id
print default_id
1
manufacturer = colander.SchemaNode(colander.String(),
default = default_id
widget = widget.SelectWidget(values=Manufacturer._choices()))
HTML-визуализации не добавляет
selected="selected"
К моему поле ввода по умолчанию (или любой вариант, даже если Я его жестко кодирую, заменив имя переменной на значение, которое должно быть выбрано по умолчанию).