from tortoise import fields, models from tortoise.contrib.pydantic.creator import pydantic_model_creator, pydantic_queryset_creator from tortoise.queryset import QuerySet class User(models.Model): id = fields.IntField(pk=True) username = fields.CharField(max_length=50, unique=True) email = fields.CharField(max_length=100, unique=True) hashed_password = fields.CharField(max_length=128) created_at = fields.DatetimeField(auto_now_add=True) @staticmethod async def get_list(data): if type(data) == QuerySet: parser=pydantic_queryset_creator(User) return await parser.from_queryset(data) async def to_dict(self): if type(self) == User: parser=pydantic_model_creator(User) return await parser.from_tortoise_orm(self) class Watchlist(models.Model): id = fields.IntField(pk=True) user = fields.ForeignKeyField("models.User", related_name="watchlist") stock = fields.ForeignKeyField("models.Stock", null=True, related_name="watching") utt = fields.ForeignKeyField("models.UTTFund", null=True, related_name="watching") @staticmethod async def get_list(data): if type(data) == QuerySet: parser=pydantic_queryset_creator(Watchlist) return await parser.from_queryset(data) async def to_dict(self): if type(self) == models.Model: parser=pydantic_model_creator(Watchlist) return await parser.from_tortoise_orm(self)