Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从关系中获取独占(仅一个)最新相关对象_Python_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

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()

属性方法非常有效,这正是我想要的。谢谢属性方法非常有效,这正是我想要的。谢谢