好吧,如果您只想访问一个存储在数据库中的属性,请记住 peewee 模型只是 Python 类:
class MediaFile(BaseModel):
ID = AutoField() # You should probably use this for auto-inc IDs.
@property
def FileName(self):
return str(self.ID) + '.jpg'
对于您希望能够将其用作 SQL 构造和计算实例值的更复杂的操作,请参阅hybrid properties。使用混合属性的示例:
class Interval(Model):
start = IntegerField()
end = IntegerField()
@hybrid_property
def length(self):
return self.end - self.start
@hybrid_method
def contains(self, point):
return (self.start <= point) & (point < self.end)
通过这种混合属性和混合方法,我们可以在 SQL 查询中或在模型实例上使用这些属性。所以我们最终能够做以下事情:
query = Interval.select().where(Interval.contains(2))
将生成以下 SQL:
SELECT "id", "start", "end"
FROM "interval" AS t1
WHERE (("start" <= 2) AND (2 < "end"))
但我们也可以这样做:
obj = Interval(start=1, end=10)
obj.contains(2) # returns True