在Flask-Admin中

时间:2015-07-03 13:11:19

标签: python flask peewee flask-admin

我正在使用Flask-Admin进行基于Flask的项目。在其中,我有一些模型(使用peewee),其中主键是用户设置的,例如username的{​​{1}}。但是Flask-Admin没有在模型的创建/编辑页面中显示这些字段。

现在,当我尝试创建新用户时,“保存”按钮会出现User错误,“保存并添加”会显示“记录成功创建”两次,但实际上并没有做任何事情

如果未设置,我已将peewee.UserDoesNotExist方法扩展为自动生成名称中的用户名,但即使删除了覆盖,问题仍然存在。

代码......

这是我的用户模型的样子:

save()

这是我的管理员代码:

# import peewee as pw

class User(BaseModel, UserMixin):
    username = pw.CharField(32, primary_key=True)
    password = pw.CharField(512, null=True)
    name = pw.CharField(64)

    # ... other fields not shown ... #

    def save(self, *args, **kwargs):
        # Set the username if field is blank
        if self.username == 'auto' or not self.username:
            self.username = self.name.replace(' ', '').lower()
        # Do the real save
        super(User, self).save(*args, **kwargs)

尝试一下

我后来尝试覆盖# from flask_admin.contrib.peewee.view import ModelView class AdminModelUser(ModelView): can_create = True column_list = ('username', 'name', 'group', 'active') admin.add_view(AdminModelUser(User, name='Users', category='Accounts')) 方法,直接使用get_form()并允许pk,如下所示:

wtfpeewee

现在该字段正在显示,但保存仍然无效。当我编辑现有用户的用户名时,管理员会说“已成功保存记录”,但不会保存。当我尝试创建新用户时,我仍然会收到# from wtfpeewee.orm import model_form class AdminModelUser(ModelView): ... def get_form(self): return model_form(User, allow_pk=True) 错误。

我的猜测是我在错误的地方完成了覆盖,字段显示在表单中但不在保存方法中。我在文档中找不到任何提及:有人知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

如果您有非整数主键,则必须使用save()致电force_insert=True以添加新行。

http://docs.peewee-orm.com/en/latest/peewee/models.html#non-integer-primary-keys-composite-keys-and-other-tricks

相关问题