fastapi - Tortoise 和 Fastapi 获取相关资源
问题描述
我在 FastAPI 上有以下 Tortoise 模型:
class Users(models.Model):
"""
The User model
"""
id = fields.CharField(pk=True, max_length=100)
#: This is a username
username = fields.CharField(max_length=20, unique=True)
name = fields.CharField(max_length=50, null=True)
email = fields.CharField(max_length=320, null=False)
friends: fields.ManyToManyRelation["Users"] = fields.ManyToManyField(
'models.Users', through='friendships', null=False, default=[]
)
class FriendRequest(models.Model):
requestor = fields.ForeignKeyField('models.Users', null=False, related_name='friendships_requestor')
requestee = fields.ForeignKeyField('models.Users', null=False, related_name='friendships_requestee')
created_at = fields.DatetimeField(auto_now=True)
accepted_at = fields.DatetimeField(null=True)
class Meta:
unique_together=(('requestor', 'requestee'))
UserOut_Pydantic = pydantic_model_creator(Users, name="UserOut", exclude=['posts', 'postss', 'email', 'commentss', 'userss'])
FriendRequestOut = pydantic_model_creator(FriendRequest, name="FriendRequestOut", exclude_readonly=True)
我想,在获取用户时,也能得到它的好友请求(他们请求与其他人请求成为好友的好友请求。)
我的 FastAPI 路由中的查询:
user = Users.filter(id=user_id).first()
user_pydantic = await UserOut_Pydantic.from_queryset_single(user)
生成的 UserOut 对象具有正确填充 FriendRequest 对象的字段friendships_requestor 和friendships_requestor。但是,这些 FriendRequest 对象不包括请求者和被请求者。(既不是 id 也不是 UserOut 对象)。我可以从当前用户的 id 中推断出两者之一,但真的很想知道如何包含它们?
样本输出:
[models.FriendRequest.leaf(id=3, created_at=datetime.datetime(2021, 9, 28, 16, 24, 13, 59434, tzinfo=<UTC>), accepted_at=None)]
解决方案
推荐阅读
- python - 屏蔽一个三维数组以执行分割
- javascript - 将 UTC 时间戳转换为可读格式
- c++ - 打开文件和系统功能总是失败?
- design-patterns - 事件同步
- powerbi - PowerBi 似乎失去了连接状态,具体取决于我选择的字段
- amazon-web-services - cloudwatch 日志订阅过滤器到 terraform 上的 kinesis
- c# - 如何从 .NET 3.5 C# 中的 Json 获取值?
- c# - 我正在关注教程,但遇到覆盖错误。无法弄清楚问题所在。CS0115
- python - 在数据框中查找具有 nan 值的列的重复子集
- javascript - JS 将 div 内容填充到 PHP 数组中,没有任何 html 标签