from django.db import models from django.utils.translation import gettext_lazy as _ from django_core.models import AbstractBaseModel from model_bakery import baker from core.apps.evaluation.choices.reference import ReferenceType class ReferenceitemModel(AbstractBaseModel): type = models.CharField( verbose_name=_("type"), max_length=50, choices=ReferenceType.choices, ) name = models.CharField(verbose_name=_("name"), max_length=255) parent = models.ForeignKey( "self", on_delete=models.CASCADE, null=True, blank=True, related_name="children", verbose_name=_("parent"), ) order = models.IntegerField(verbose_name=_("order"), default=0) is_active = models.BooleanField(verbose_name=_("is active"), default=True) def __str__(self): return f"{self.get_type_display()}: {self.name}" @classmethod def _baker(cls): return baker.make(cls) class Meta: db_table = "ReferenceItem" verbose_name = _("Reference Item") verbose_name_plural = _("Reference Items") ordering = ["type", "order", "name"]