我正在尝试编写一个数据存储模型类,该类具有创建对象的功能,并将其一次性添加到数据存储区。这是我目前拥有的(不起作用):
class Channel(db.Model):
name = db.StringProperty(required = True)
subscriber_list = db.ListProperty(users.User)
def addChannelWithName(name):
channel = Channel()
channel.name = name
channel.put()
从这里我得到的问题是,第一件事传递给addChannelWithName()假设是一个Channel实例,但当然我正在尝试做一个通道实例还不存在。它应该在此功能期间创建。我该怎么做才能做到这一点?有没有办法将此函数保留为Channel的方法,还是应该是一个完全独立于类的函数?或者我应该做别的事吗?非常感谢!
答案 0 :(得分:2)
或者你可以使它成为类方法或静态方法。这样,如果您在其他地方使用模型,则无需从模块中导入单独的函数。
class Channel(db.Model):
name = db.StringProperty(required = True)
subscriber_list = db.ListProperty(users.User)
@classmethod
def addChannelWithName(cls,name):
channel = cls()
channel.name = name
channel.put()
或静态方法并省略cls。
您可以将其称为Channel.addChannelWithName(name) 如果你使用类或静态方法,我会从方法名称中删除“Channel”位,因为它是多余的。即Channel.addWithName(name),因为你只从类中调用它。
答案 1 :(得分:0)
我认为最简单的解决方案是使其成为顶级的独立功能而不是方法。 (你可以把它变成一个静态方法,或者 - 通过改变呼叫签名 - 一种类方法,但我在这里做这件事并没有任何好处。)