|
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) |