from django.db import models from django.urls import reverse from app.base.forms.fields import DateField from datetime import date from typing import TYPE_CHECKING if TYPE_CHECKING: from app.base.models import Person, Trait class TraitMapping(models.Model): user: 'models.ForeignKey[Person]' = models.ForeignKey( 'Person', on_delete=models.CASCADE, related_name='traits', verbose_name='Werkstattnutzer:in') trait: 'models.ForeignKey[Trait]' = models.ForeignKey( 'Trait', on_delete=models.CASCADE, verbose_name='Attribut') valid_from: 'models.DateField[date]' = DateField( 'Gültig von', default=date.today) valid_until: 'models.DateField[date|None]' = DateField( 'Gültig bis', blank=True, null=True) class Meta: verbose_name = 'Attributzuweisung' verbose_name_plural = 'Attributzuweisungen' def __str__(self): return f'Attribut „{self.trait}“ für {self.user}' def get_absolute_url(self): return reverse('trait-mapping:detail', kwargs={'pk': self.pk})