from django.db import models from django.utils.translation import gettext_lazy as _ class Subject(models.Model): class Meta: verbose_name = _('Subject') verbose_name_plural = _('Subjects') id = models.CharField(_('CIN'), max_length=8, primary_key=True) vat_id = models.CharField( _('VAT ID'), max_length=12, null=True, blank=True, ) def get_latest_data(self): return self.subject_data.filter(subject=self).order_by( '-created_date', ).first() def __str__(self): return f'{self.id} - {self.get_latest_data().name}' class SubjectData(models.Model): class Meta: verbose_name = _('Subject Data') verbose_name_plural = _('Subject Datas') subject = models.ForeignKey( Subject, on_delete=models.CASCADE, related_name='subject_data', ) name = models.CharField(_('Name'), max_length=128) street = models.CharField(_('Street'), max_length=64) zip_code = models.CharField(_('Zip Code'), max_length=6) city = models.CharField(_('City'), max_length=64) city_part = models.CharField( _('City part'), max_length=64, null=True, blank=True, ) created_date = models.DateTimeField(_('Created date'), auto_now_add=True) def __str__(self): return f'{self.subject.id} - {self.name} - {self.created_date}'