【问题标题】:flask-sqlalchemy model property to stringflask-sqlalchemy 模型属性到字符串
【发布时间】:2014-05-20 15:08:34
【问题描述】:

我有以下代码:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy(app)

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), unique=True)

    def id_to_string(self):
        return str(id)

但是当我调用 Product.id_to_string() 函数时,它给了我:

<built-in function id>

我做错了什么?如何将 id 的值作为字符串获取?

【问题讨论】:

  • id 是模型实例的属性。所以你需要把它称为self.id
  • 当然,我不知道我是怎么错过的:/ 谢谢!

标签: python flask-sqlalchemy


【解决方案1】:

您需要在您的函数中放置一个self 修饰符:

def id_to_string(self):
  return str(self.id)

否则,您将调用 id 内置函数(请参阅 here。)这就是为什么大多数 linter 实际上会标记您使用“id”作为变量名,即使它是有意义的。

【讨论】:

  • 天哪,我现在感觉好傻 :( 非常感谢!
  • @NiniMichaels 真的吗?如果我不问这种类型的问题,而是浪费几个小时挠头,我会感觉更愚蠢。这就是为什么拥有第二双眼睛非常好。感谢你的实际提问。许多人会感到太羞耻(从而放慢或停止学习。)
【解决方案2】:
@property
def id_to_string(self):
  return str(self.id)

如果你愿意,你也可以使用装饰器。

【讨论】:

    猜你喜欢
    • 2013-10-12
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2018-08-22
    • 2013-12-31
    • 2019-11-10
    相关资源
    最近更新 更多