Невозможно работать с объектами, связанными с Django Model, для приложения Analysis-tracking App

Я пытаюсь сделать веб-приложение, которое позволяет добавлять пациентов и добавлять, а затем отслеживать их медицинские анализы. Пример. Пытаюсь сделать модели для этого... Не могли бы вы подсказать мне: какова стратегия, если моя следующая цель - сделать форму, позволяющую заполнять все строки из группы анализов. Стоит ли мне двигаться в этом направлении? (Так что дальше будут проблемы с Orm-запросами)

Я пытался разобраться со следующим решением, но, может быть, вы посмотрите на это профессиональным взглядом? Очень признателен

patient/models.py:

class PatientGender(models.Model):
    gender = models.CharField(max_length=16)

    def __str__(self):
        return f"{self.gender}"


# Create your models here.
class Patient(models.Model):
    hist_number = models.IntegerField(unique=True, verbose_name='Номер истории болезни')
    last_name = models.CharField(max_length=32, verbose_name='Фамилия')
    first_name = models.CharField(max_length=32, verbose_name='Имя')
    second_name = models.CharField(max_length=32, verbose_name='Отчество')
    birth_date = models.DateField(verbose_name='Дата рождения')
    date_time = models.DateField(auto_now_add=True, verbose_name='Время поступления в ОРиТ')
    sex = models.ForeignKey(PatientGender, verbose_name='Пол', on_delete=models.CASCADE, default=1)
    seat = models.PositiveSmallIntegerField(verbose_name='Палата', blank=True, null=True)
    description = models.TextField(blank=True, verbose_name='Палата')
    is_Active = models.BooleanField(verbose_name='Находится на лечении', default=True)

    def __str__(self):
        return f"{self.hist_number}: {self.last_name} {self.first_name} {self.second_name}"

analysis/models.py:

class AnalyzesGroup(models.Model):
    name = models.CharField(max_length=256, verbose_name='Группа исследований')
    description = models.TextField(blank=True, verbose_name='Примечание')

    class Meta:
        verbose_name = 'Группа анализов'
        verbose_name_plural = 'Группы анализов'

    def __str__(self):
        return f"{self.name}"



class AnalysisType(models.Model):
    name = models.CharField(max_length=256, verbose_name='Исследование')
    measurement = models.CharField(max_length=10, verbose_name='Единицы измерения')
    ref_min = models.FloatField(verbose_name='Мин. реф. значения')
    ref_max = models.FloatField(verbose_name='Макс. реф. значения')
    description = models.TextField(blank=True, verbose_name='Примечание')
    analyzes_group = models.ForeignKey(AnalyzesGroup, on_delete=models.CASCADE)

    class Meta:
        verbose_name = 'Лабораторный показатель'
        verbose_name_plural = 'Лабораторные показатели'

    def __str__(self):
        return f"{self.name}"



class PatientAnalysis(models.Model):
    an_number = models.IntegerField(verbose_name='Номер анализа')
    date = models.DateField(verbose_name='Дата анализа')
    time = models.TimeField(verbose_name='Время')
    patient = models.ForeignKey('patient.Patient', verbose_name='Анализ пациента', on_delete=models.CASCADE)
    analysis = models.ForeignKey(AnalysisType, on_delete=models.CASCADE)
    value = models.FloatField(verbose_name='Значение')
    description = models.TextField(blank=True, verbose_name='Примечание')

    class Meta:
        verbose_name = 'Анализ'
        verbose_name_plural = 'Анализы пациентов'
        ordering = ['-date', '-time']

    def __str__(self):
        return f"{self.an_number} {self.patient} {self.analysis} {self.value} {self.analysis.measurement}"


Вернуться на верх