Почему эта форма Flask-admin всегда не проходит проверку?


Поле status показывает 3 варианта, но всегда отображает "не допустимый выбор" на submisison, независимо от того, что выбрано.

from website import app, db
from flask.ext import admin
from flask.ext.admin.contrib import sqlamodel
from wtforms.fields import SelectField


class Users(db.Model):
    id     = db.Column(db.Integer, primary_key=True)
    name   = db.Column(db.String(160), unique=True)
    status = db.Column(db.Integer)

    def __repr__(self):
        return self.name


class UsersAdmin(sqlamodel.ModelView):
    form_overrides = dict(status=SelectField)
    form_args = dict(
        status=dict(
            choices=[(0, 'Regular'), (1, 'Guest'), (2, 'Banned')],
        ))

admin = admin.Admin(app, 'Admin')
admin.add_view(UsersAdmin(Users, db.session))
1 5

1 ответ:

Вполне вероятно, что выбор передается в виде строки unicode, в то время как поле состояния в БД является целочисленным. Вы можете попробовать следующее:

form_args = dict(
    status=dict(
        choices=[(0, 'Regular'), (1, 'Guest'), (2, 'Banned')],coerce=int
    ))