我正在尝试轻松地呈现来自两个不同表(类)的数据。我有一个包含所有环境详细信息的Environment
类和一个包含所有环境中历史记录更改的Changes
类。
我的观点目前正在显示我的所有Environment
个详细信息。我想在此视图中添加对每个环境进行的最后一次更改(例如,最后修改者:User
)。
我的models.py
看起来像这样:
class System(models.Model):
system_name = models.CharField(max_length=40, blank=True)
system_id = models.CharField(max_length=100, blank=True)
system_clusters = models.ManyToManyField(Cluster, blank=True)
system_owner = models.CharField(max_length=20, blank=True)
def __str__(self):
return self.system_name
class Changes(models.Model):
date = models.DateTimeField(auto_now_add=True)
cluster = models.ForeignKey(System, on_delete=models.CASCADE)
user = models.CharField(max_length=20, blank=True)
change_reason = models.CharField(max_length=50, blank=True)
def __str__(self):
return self.date
首先,我将字典传递给我的模板,其中system
为关键字,change
为值:
last_changes = {}
change = Changes.objects.filter(cluster__in=s.system_clusters.all()).order_by('-id')[0]
last_changes[s.system_id] = change.change_reason
即使它部分有效(我仍然试图在我的模板中解析dict),我觉得这不是正确的任务方法。
我希望得到一个结果,我可以在模板中调用system.last_change
。我可以为System
课程添加另一个字段,该字段将指向last_change
表格中的Changes
吗?
答案 0 :(得分:1)
您可以在System上编写一个方法来返回项目的最后一次更改:
def last_change(self):
return self.changes_set.order_by('-date').first()
现在你确实可以在模板中调用system.last_change
。