连接并呈现来自djang中两个不同表的数据

2024-04-26 20:46:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图轻松地呈现来自两个不同表(类)的数据。我有一个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类添加另一个字段,该字段将指向Changes表中的last_change


Tags: self模板idtrueenvironmentmodelschangesystem
1条回答
网友
1楼 · 发布于 2024-04-26 20:46:12

您可以在系统上编写一个方法来返回项的最后更改:

def last_change(self):
    return self.changes_set.order_by('-date').first()

现在您确实可以在模板中调用system.last_change

相关问题 更多 >