from typing import final from tortoise import Model, fields @final class Teilchen(Model): name = fields.TextField() description = fields.TextField() number = fields.IntField() # validate values >= 0 created_at = fields.DatetimeField(auto_now_add=True) modified_at = fields.DatetimeField(auto_now=True) tags = fields.ManyToManyField( "models.Tag", through="models.TeilchenTag", related_name="teilchen", forward_key="tag_id", backward_key="teilchen_id", ) @final class Tag(Model): name = fields.CharField(max_length=20) created_at = fields.DatetimeField(auto_now_add=True) modified_at = fields.DatetimeField(auto_now=True) @final class TeilchenTag(Model): teilchen: fields.ForeignKeyRelation[Teilchen] = fields.ForeignKeyField( "models.Teilchen" ) tag: fields.ForeignKeyRelation[Tag] = fields.ForeignKeyField("models.Tag") weight = fields.IntField()