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

Существует ли способ автоматически генерировать новое поле при создании модели с внешним ключом

    class Metric(models.Model):
    name = CharField(null = True, blank = True, max_length = 200) 
    abbreviation = CharField(null = True, blank = True, max_length = 10)

    def __str__(self):
        try:
            return self.name
        except Exception as e:
            return str(e)
        
class Test(models.Model):
    name = CharField(null = True, blank = True, max_length = 200)
    metrics = ManyToManyField(Metric, null = True, blank = True)

    def __str__(self):
        try:
            return self.name
        except Exception as e:
            return str(e)
        
class TestVariable(models.Model):
    independent_variable = ForeignKey(Variable, null = True, blank = True,on_delete = models.CASCADE, related_name = "independent_variables")
    dependent_variable = ForeignKey(Variable, null = True, blank = True, on_delete = models.CASCADE, related_name = "dependent_variables")

    test = ForeignKey(Test, null = True, blank = True, on_delete = models.CASCADE)

    def __str__(self):
        try:
            return self.name
        except Exception as e:
            return str(e)
    

Итак, если я создал новый Metric, есть ли способ автоматически добавить поле в TestVariable

Например, если я создам поле Metric для стандартного отклонения, оно автоматически создаст поле в TestVariable, чтобы принять числовое значение стандартного отклонения.

from django.db import models
from django.contrib.postgres.fields import JSONField

class TestVariable(models.Model):
    independent_variable = models.ForeignKey(Variable, null=True, blank=True, on_delete=models.CASCADE, related_name="independent_variables")
    dependent_variable = models.ForeignKey(Variable, null=True, blank=True, on_delete=models.CASCADE, related_name="dependent_variables")
    test = models.ForeignKey(Test, null=True, blank=True, on_delete=models.CASCADE)
    metrics_data = JSONField(default=dict)  # This field can store metrics dynamically

    def __str__(self):
        return self.test.name if self.test.name else 'Unnamed TestVariable'

При создании нового Metric можно обновить поле metrics_data в TestVariable

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