39 lines
963 B
Python
39 lines
963 B
Python
|
|
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()
|