Tortoise ORM:自定义查询集
TortoiseORM: custom queryset
在 Django ORM 中,您可以为您的模型编写自定义 QuerySet
class,然后使用该查询集而不是管理器,这样您就可以像这样链接过滤方法:
Users.objects.active(False).created_before(a_month_ago).delete()
这允许将有关数据库表结构的所有知识保存在一个地方。
你能在 Tortoise 中做类似的事情吗?
目前,我找到了以下方法,感觉有点hacky:
class EventQuerySet(QuerySet):
def by_id(self, id) -> Self:
return self.filter(id=id)
def by_name(self, name) -> Self:
return self.filter(name=name)
class EventManager(Manager):
def get_queryset(self) -> EventQuerySet:
return EventQuerySet(Event)
class Event(Model):
name = fields.CharField(max_length=255)
tournament = fields.ForeignKeyField('models.Tournament', related_name='events')
participants = fields.ManyToManyField('models.Team', related_name='event_team')
objects = EventManager()
现在我可以链接我的过滤器了:
events = await models.Event.objects.by_name("game one").by_id(2)
在 Django ORM 中,您可以为您的模型编写自定义 QuerySet
class,然后使用该查询集而不是管理器,这样您就可以像这样链接过滤方法:
Users.objects.active(False).created_before(a_month_ago).delete()
这允许将有关数据库表结构的所有知识保存在一个地方。
你能在 Tortoise 中做类似的事情吗?
目前,我找到了以下方法,感觉有点hacky:
class EventQuerySet(QuerySet):
def by_id(self, id) -> Self:
return self.filter(id=id)
def by_name(self, name) -> Self:
return self.filter(name=name)
class EventManager(Manager):
def get_queryset(self) -> EventQuerySet:
return EventQuerySet(Event)
class Event(Model):
name = fields.CharField(max_length=255)
tournament = fields.ForeignKeyField('models.Tournament', related_name='events')
participants = fields.ManyToManyField('models.Team', related_name='event_team')
objects = EventManager()
现在我可以链接我的过滤器了:
events = await models.Event.objects.by_name("game one").by_id(2)