Python Flask login get_id方法给出Peewee错误

Python Flask login get_id方法给出Peewee错误,python,flask,peewee,flask-login,Python,Flask,Peewee,Flask Login,我试图将peewee与Flask登录结合使用,现在在实现get\u id()方法时遇到了麻烦。下面,我拥有的用户类如下所示: class User(db.Model, BaseUser): username = CharField() password = CharField() def is_authenticated(self): return True def is_active(self): return True

我试图将peewee与Flask登录结合使用,现在在实现
get\u id()
方法时遇到了麻烦。下面,我拥有的用户类如下所示:

class User(db.Model, BaseUser):
    username = CharField()
    password = CharField()

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return unicode(self.id)
在尝试将用户保存到(sqlite)数据库时,出现以下错误:

>>> from app.models import User
>>> u = User()
>>> u.username = 'lala'
>>> u.password = 'blabla'
>>> u.save()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/peewee.py", line 3488, in save
    rows = self.update(**field_dict).where(self.pk_expr()).execute()
  File "/Library/Python/2.7/site-packages/peewee.py", line 2487, in execute
    return self.database.rows_affected(self._execute())
  File "/Library/Python/2.7/site-packages/peewee.py", line 2119, in _execute
    sql, params = self.sql()
  File "/Library/Python/2.7/site-packages/peewee.py", line 2484, in sql
    return self.compiler().generate_update(self)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1482, in generate_update
    return self.build_query(clauses, alias_map)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1357, in build_query
    return self.parse_node(Clause(*clauses), alias_map)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1318, in parse_node
    sql, params, unknown = self._parse(node, alias_map, conv)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1293, in _parse
    sql, params = self._parse_map[node_type](node, alias_map, conv)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1246, in _parse_clause
    node.nodes, alias_map, conv, node.glue)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1335, in parse_node_list
    node_sql, node_params = self.parse_node(node, alias_map, conv)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1318, in parse_node
    sql, params, unknown = self._parse(node, alias_map, conv)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1293, in _parse
    sql, params = self._parse_map[node_type](node, alias_map, conv)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1227, in _parse_expression
    rhs, rparams = self.parse_node(node.rhs, alias_map, conv)
  File "/Library/Python/2.7/site-packages/peewee.py", line 1320, in parse_node
    params = [conv.db_value(i) for i in params]
  File "/Library/Python/2.7/site-packages/peewee.py", line 674, in db_value
    return value if value is None else self.coerce(value)
ValueError: invalid literal for int() with base 10: 'None'
>>从app.models导入用户
>>>u=用户()
>>>u.username='lala'
>>>u.password='blabla'
>>>u.save()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Library/Python/2.7/site packages/peewee.py”,第3488行,保存
rows=self.update(**field_dict).where(self.pk_expr()).execute()
文件“/Library/Python/2.7/site packages/peewee.py”,执行中的第2487行
返回self.database.rows\u受影响(self.\u execute())
文件“/Library/Python/2.7/site packages/peewee.py”,第2119行,在
sql,params=self.sql()
sql中的文件“/Library/Python/2.7/site packages/peewee.py”,第2484行
返回self.compiler().生成更新(self)
文件“/Library/Python/2.7/site packages/peewee.py”,第1482行,在generate\u update中
返回self.build\u查询(子句、别名\u映射)
文件“/Library/Python/2.7/site packages/peewee.py”,第1357行,内置查询
返回self.parse_节点(子句(*子句),别名_映射)
parse_节点中的文件“/Library/Python/2.7/site packages/peewee.py”,第1318行
sql,params,unknown=self.\u parse(节点,别名\u映射,conv)
文件“/Library/Python/2.7/site packages/peewee.py”,第1293行,在
sql,params=self.\u解析\u映射[节点类型](节点,别名\u映射,conv)
文件“/Library/Python/2.7/site packages/peewee.py”,第1246行,在_parse_子句中
node.nodes、别名映射、conv、node.glue)
文件“/Library/Python/2.7/site packages/peewee.py”,第1335行,在parse_node_列表中
node\u sql,node\u params=self.parse\u node(node,别名\u映射,conv)
parse_节点中的文件“/Library/Python/2.7/site packages/peewee.py”,第1318行
sql,params,unknown=self.\u parse(节点,别名\u映射,conv)
文件“/Library/Python/2.7/site packages/peewee.py”,第1293行,在
sql,params=self.\u解析\u映射[节点类型](节点,别名\u映射,conv)
文件“/Library/Python/2.7/site packages/peewee.py”,第1227行,在解析表达式中
rhs,rparams=self.parse\u节点(node.rhs,别名\u映射,conv)
parse_节点中的文件“/Library/Python/2.7/site packages/peewee.py”,第1320行
params=[参数中i的conv.db_值(i)]
文件“/Library/Python/2.7/site packages/peewee.py”,第674行,db_值
如果值为None-else self,则返回值。强制(值)
ValueError:基数为10的int()的文本无效:“无”

如果我删除
get_id()
方法,我不会得到任何错误,因此该方法似乎是所有邪恶的根源。有人知道它有什么问题吗?欢迎所有提示

Peewee模型实现一个get_id()方法,pk_expr()方法使用该方法。我猜这就是问题的根源


大师级修复:

立即修复,太棒了!