Автоматический список полей из модели "многие-ко-многим

Я создал модель типов анализа, а затем создал таблицу, которая группирует несколько анализов в одну группу:

class AnalysisType(models.Model):
    a_name = models.CharField(max_length=16,primary_key=True)
    a_measur = models.CharField(max_length=16)
    a_ref_min = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True)
    a_ref_max = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True)
    # analysis_group = models.ForeignKey(AnalysysGroup, on_delete=models.CASCADE, default=1)
    def __str__(self):
        return f"{self.a_name} - {self.a_measur}"

class AnalysysGroup(models.Model):
    group_name = models.CharField(max_length=32)
    analysis = models.ManyToManyField(AnalysisType, blank=True)
    def __str__(self):
        return f"{self.group_name}"

Я хочу иметь возможность многократного добавления значений через панель администратора (т.е. я выбираю тип анализа, затем ниже появляются поля для заполнения)

class PatientGroupAnalysis(models.Model):
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
    analysis_date = models.DateTimeField()
    analysis_type = models.ForeignKey(AnalysysGroup, on_delete=models.CASCADE, default=1)
    # amalysis_data = ???
    def __str__(self):
        return f"{self.patient}:  {self.analysis_date} - {self.analysis_type} - {self.analysis_data}"

введите описание изображения здесь

Пробовал использовать amalysis_data = analysis.type.objects.all() и т.д., но это неправильный способ, я думаю... :(

)

Попробуйте это:

Панель администратора с StackedInline

from django.contrib import admin
from .models import AnalysisType, PatientGroupAnalysis

# Register your models here.

class PatientGroupAnalysisInline(admin.StackedInline):
    model = PatientGroupAnalysis


@admin.register(AnalysisType)
class AnalysisTypeAdmin(admin.ModelAdmin):
    list_display = ["id", "a_name", "a_measur", "a_ref_min", "a_ref_max"]
    search_fields = ("id", "a_name")
    inlines = [PatientGroupAnalysisInline]
Вернуться на верх