[models] add constraints
This commit is contained in:
parent
59e68f47bd
commit
be0d7acf3b
1 changed files with 27 additions and 9 deletions
|
|
@ -1,17 +1,31 @@
|
|||
from datetime import datetime
|
||||
|
||||
from tortoise import Model, fields
|
||||
from tortoise.validators import MinValueValidator
|
||||
|
||||
|
||||
class TimestampMixin:
|
||||
created_at: fields.Field[datetime] = fields.DatetimeField(auto_now_add=True)
|
||||
modified_at: fields.Field[datetime] = fields.DatetimeField(auto_now=True)
|
||||
created_at: fields.Field[datetime] = fields.DatetimeField(
|
||||
auto_now_add=True,
|
||||
)
|
||||
modified_at: fields.Field[datetime] = fields.DatetimeField(
|
||||
auto_now=True,
|
||||
)
|
||||
|
||||
|
||||
class Teilchen(TimestampMixin, Model):
|
||||
name: fields.Field[str] = fields.TextField()
|
||||
description: fields.Field[str] = fields.TextField()
|
||||
number: fields.Field[int] = fields.IntField() # TODO: validate values >= 0
|
||||
name: fields.Field[str] = fields.TextField(
|
||||
null=False,
|
||||
)
|
||||
description: fields.Field[str] = fields.TextField(
|
||||
null=False,
|
||||
)
|
||||
number: fields.Field[int] = fields.IntField(
|
||||
null=False,
|
||||
validators=[
|
||||
MinValueValidator(0),
|
||||
],
|
||||
)
|
||||
|
||||
tags: fields.ManyToManyRelation["Tag"] = fields.ManyToManyField(
|
||||
"models.Tag",
|
||||
|
|
@ -23,12 +37,16 @@ class Teilchen(TimestampMixin, Model):
|
|||
|
||||
|
||||
class Tag(TimestampMixin, Model):
|
||||
name: fields.Field[str] = fields.CharField(max_length=20)
|
||||
name: fields.Field[str] = fields.CharField(
|
||||
null=False,
|
||||
max_length=20,
|
||||
)
|
||||
|
||||
|
||||
class TeilchenTag(Model):
|
||||
teilchen: fields.ForeignKeyRelation[Teilchen] = fields.ForeignKeyField(
|
||||
"models.Teilchen"
|
||||
"models.Teilchen",
|
||||
)
|
||||
tag: fields.ForeignKeyRelation[Tag] = fields.ForeignKeyField(
|
||||
"models.Tag",
|
||||
)
|
||||
tag: fields.ForeignKeyRelation[Tag] = fields.ForeignKeyField("models.Tag")
|
||||
weight: fields.Field[int] = fields.IntField() # range? percentage?
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue