from django.contrib.auth.models import AbstractUser from django.db import models from django.utils.translation import gettext_lazy as _ from subjects.models import Subject class User(AbstractUser): REQUIRED_FIELDS = ['email', 'first_name', 'last_name'] first_name = models.CharField(_('first name'), max_length=150) last_name = models.CharField(_('last name'), max_length=150) email = models.EmailField(_('email address')) supplier = models.ForeignKey( Subject, models.PROTECT, _('supplier'), blank=True, null=True, ) customers = models.ManyToManyField( Subject, blank=True, verbose_name=_('customers'), ) class Meta: verbose_name = _("user") verbose_name_plural = _("users") def _get_m2m_ids(self, field: str): return list(getattr(self, field).values_list('id', flat=True)) def get_customers(self) -> list[int]: return self._get_m2m_ids('customers')