ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

tortoise orm

2022-08-22 00:32:51  阅读:204  来源: 互联网

标签:tortoise fields IntField orm Model True id name


反向代码提示:
在使用外键的时候,我们需要获取到反向代码提示(即被绑定的model查询绑定model),这个时候需要使用relation字段来提示,(其实你不加也没啥关系,只是个提示作用,在django里面是编辑器和插件提前内置了相关字段所以不用手写)
示例代码如下:

from tortoise.models import Model
from tortoise import fields

class Tournament(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=255)
    events: fields.ReverseRelation["Event"]#仅用于代码提示,注意events必须和Event里面的外键指定的related_name同名

class Event(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=255)
    tournament: fields.ForeignKeyRelation[Tournament] = fields.ForeignKeyField(
        "models.Tournament", related_name="events"
    )
    participants: fields.ManyToManyRelation["Team"] = fields.ManyToManyField(
        "models.Team", related_name="events", through="event_team"
    )#注意多对多,两个model里面都要写,虽然复杂了点,但是有代码提示还是很合算的。。through在django里面是指定多对多表的名字和功能,
需要手动创建,这里可能是示例代码不全吧。。得测试 class Team(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=255) events: fields.ManyToManyRelation[Event]#反向关系,
class Uusers(Model):
    id = fields.IntField(pk=True)
    name = fields.IntField()
    dept: fields.ReverseRelation["Dept"]


class Dept(Model):
    id = fields.IntField(pk=True)
    name = fields.IntField()
    user = fields.ForeignKeyField('models.Uusers', on_delete=fields.CASCADE, related_name='dept', verbose_name='所属部门')

 

    # todo 外键正向查找,使用非id字段
    # users = await Dept.filter(user__name=79997).values(*fields)
    # todo 外键正向查找,使用id字段
    users = await Dept.filter(user_id=90001).values()
    # todo 外键反向查找示例
    # users = await Uusers.filter(dept__id=5).values()

  

 

 

  

  

标签:tortoise,fields,IntField,orm,Model,True,id,name
来源: https://www.cnblogs.com/pearlcity/p/16611506.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有