下面是一个使用Tortoise-ORM的annotate()
方法的例子:
from tortoise import fields, models
from tortoise.queryset import F
class Book(models.Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=255)
author = fields.CharField(max_length=255)
price = fields.FloatField()
class Meta:
table = 'book'
async def get_books_with_discount():
books = await Book.annotate(discount_price=F('price')*0.8).all()
return [book.to_dict() for book in books]
在上面的代码中,我们定义了一个Book
模型来表示一本书。在get_books_with_discount()
函数中,我们使用.annotate()
方法来添加一个新的计算列,这个计算列代表了每本书打折后的价格。我们使用F()
函数来引用price
字段,并将其乘以0.8。
最后,我们使用.all()
方法来查询所有的书籍,并返回一个字典格式的列表,其中包含了每本书的ID、名称、作者、价格和打折后的价格。