有没有办法在创建外键模型时自动生成新字段
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
字段