|
from tortoise import fields, models |
|
from pydantic import BaseModel, ConfigDict |
|
from tortoise.contrib.pydantic.creator import pydantic_model_creator, pydantic_queryset_creator |
|
from tortoise.queryset import QuerySet |
|
|
|
class UTTFund(models.Model): |
|
id = fields.IntField(pk=True) |
|
symbol = fields.CharField(max_length=20, unique=True) |
|
name = fields.CharField(max_length=100) |
|
|
|
@staticmethod |
|
async def get_list(data): |
|
if type(data) == type([UTTFund]): |
|
parser=pydantic_queryset_creator(UTTFund) |
|
return await parser.from_queryset(data) |
|
|
|
async def to_dict(self): |
|
if type(self) == UTTFund: |
|
parser=pydantic_model_creator(UTTFund) |
|
return await parser.from_tortoise_orm(self) |
|
|
|
|
|
class UTTFundData(models.Model): |
|
id = fields.IntField(pk=True) |
|
fund = fields.ForeignKeyField("models.UTTFund", related_name="data") |
|
date = fields.DateField() |
|
nav_per_unit = fields.FloatField() |
|
sale_price_per_unit = fields.FloatField() |
|
repurchase_price_per_unit = fields.FloatField() |
|
outstanding_number_of_units = fields.BigIntField() |
|
net_asset_value = fields.BigIntField() |
|
|
|
@classmethod |
|
async def get_list(data): |
|
if type(data) == QuerySet: |
|
parser=pydantic_queryset_creator(UTTFundData) |
|
return await parser.from_queryset(data) |
|
|
|
|
|
async def to_dict(self): |
|
if type(self) == models.Model: |
|
parser=pydantic_model_creator(UTTFundData) |
|
return await parser.from_tortoise_orm(self) |
|
|
|
|
|
|
|
class Meta: |
|
unique_together = ("fund", "date") |