通过它们之间的关系将模型的特定字段放在另一个模型中

时间:2016-02-07 04:24:02

标签: python django-models django-forms django-admin foreign-key-relationship

我正在使用django-smart-selects部署特定表单字段,这些字段基于在相同表单中选择的选项。 我有以下型号:

Session,与ManyToMany

Metrics的关系

Session型号

class Session(models.Model):

    corporal_structures = models.ForeignKey(SingleBodySegment)
    movement = ChainedManyToManyField(
        Movements,
        chained_field = 'corporal_structures',
        chained_model_field = 'corporal_segments'
    )

    metrics = models.ManyToManyField(Metrics, blank=True)

    date_session_begin = models.DateTimeField(default=timezone.now())
    date_session_end = models.DateTimeField(default=timezone.now())
    observations = models.TextField(blank=False

Metrics型号

class Metrics(models.Model):
     name = models.CharField(max_length=255, blank=True)
     equation = models.CharField(max_length=255, blank=True)
     min_value = models.DecimalField(max_digits=5,decimal_places=3)
     max_value = models.DecimalField(max_digits=5,decimal_places=3)

     def __str__(self):
        return "%s" % self.name

由于ManyToMany关系,在Sessions表单中(在django admin中),我可以看到Metrics模型的指标列表,但我只能看到{{ 1}} name实例的属性,格式为

enter image description here

我想要的不仅仅是Metrics属性,我还希望得到属于name模型<的equationmin_valuemax_value属性/ p>

在模型/表中Metrics是我创建Metrics实例的地方,但是当我创建Metrics模型的实例时,我应该为此{{1}表示Session值实例,具有相应的原生字段,例如:

enter image description here

如何获取Metrics模型的其他字段并以Session形式提供?

如果我已将MetricsSession模型与Metrics关系关联起来,那么这对于获取我想要的模型应该是有用的吗?

我一直在想我更多的是关系主题和Django ORM而不是django-smart-select应用程序。 我不知道我之前的肯定是否擅长

任何方向都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

只需更改__str__模型中存在的魔术函数Metrics,如下所示。

def __str__(self):
    return "{},{},{}".format(self.name, self.min_value, self.max_value)

此方法会覆盖默认的__str__函数。因此,您可以根据需要修改返回值。