Python 从关系中获取独占(仅一个)最新相关对象
我有两个模型描述如下:Python 从关系中获取独占(仅一个)最新相关对象,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我有两个模型描述如下: class Report(models.Model): report_name = models.CharField(max_length=140) report_description = models.TextField(null=True, blank=True) last_updated = models.DateTimeField(null=True, blank=True) metric = models.ManyToManyF
class Report(models.Model):
report_name = models.CharField(max_length=140)
report_description = models.TextField(null=True, blank=True)
last_updated = models.DateTimeField(null=True, blank=True)
metric = models.ManyToManyField(Metric, through='MetricAssociation')
class Status(models.Model):
report = models.ForeignKey(Report, on_delete=models.CASCADE)
status = models.CharField(max_length=140)
provided_by = models.ForeignKey(TeamMember, on_delete=models.CASCADE)
date = models.DateTimeField()
我已经创建了一个包含所有报告和属性的索引页。我只想介绍每个报告的最新状态,以及在如下视图中使用的报告列表:
<td>{{ report.report_name }}</td>
<td>{{ report.last_updated }}</td>
<td>{{ report.latest_status }}</td>
{{report.report\u name}
{{report.last_updated}
{{report.latest_status}
由于报表没有“最新状态”属性,但理想情况下,最新状态是该报表的最新状态,因此如何传递该属性?非常简单:报表
实例的“最新状态”是
`your_report_instance.status_set.order_by("date").last()`
现在,由于这有点冗长,暴露了太多的实现,并且无法从模板访问,因此您只需将调用封装在getter方法或属性中,即:
class Report(models.Model):
report_name = models.CharField(max_length=140)
report_description = models.TextField(null=True, blank=True)
last_updated = models.DateTimeField(null=True, blank=True)
metric = models.ManyToManyField(Metric, through='MetricAssociation')
@property
def latest_status(self):
return self.status_set.order_by("date").last()
非常简单:报告
实例的“最新状态”是
`your_report_instance.status_set.order_by("date").last()`
现在,由于这有点冗长,暴露了太多的实现,并且无法从模板访问,因此您只需将调用封装在getter方法或属性中,即:
class Report(models.Model):
report_name = models.CharField(max_length=140)
report_description = models.TextField(null=True, blank=True)
last_updated = models.DateTimeField(null=True, blank=True)
metric = models.ManyToManyField(Metric, through='MetricAssociation')
@property
def latest_status(self):
return self.status_set.order_by("date").last()
属性方法非常有效,这正是我想要的。谢谢属性方法非常有效,这正是我想要的。谢谢