如何在django中跨多个表查询最近的记录



我有两个模型看起来像这样:

class Node(models.Model):
    user = models.ForeignKey(User, null=False)
    name = models.CharField(max_length=50)
class Activation(models.Model):
    node = models.ForeignKey(Node, null=False)
    active = models.BooleanField(default=False)
    datetime = models.DateTimeField(default=datetimeM.datetime.now)

激活表存储给定节点是否处于"活动"状态。因此,要弄清楚一个节点是否处于活动状态,需要获取该节点的最新激活记录。

我正试图弄清楚如何编写一个返回所有活动节点的django查询。

以下是一些示例数据

Node Table
  id  |   name
--------------------
   0  |  andrew
   1  |   bill
   2  |   bob
Activation Table
  id  | nodeId | active | datetime
--------------------
   0  |   0    |  false | 01-01-2013:00:01:02
   1  |   0    |   true | 01-02-2013:00:01:02
   2  |   0    |  false | 01-03-2013:00:01:02
   3  |   1    |  false | 01-04-2013:00:01:02
   4  |   0    |   true | 01-05-2013:00:01:02
   5  |   1    |   true | 01-06-2013:00:01:02
   6  |   2    |  false | 01-07-2013:00:01:02

因此,查询需要返回[node0,node1]

class Node(models.Model):
   user = models.ForeignKey(User, null=False)
    name = models.CharField(max_length=50)
class Activation(models.Model):
   node = models.ForeignKey(Node, null=False, related_name='activations')
   active = models.BooleanField(default=False)
   datetime = models.DateTimeField(default=datetimeM.datetime.now)
   #latest activation record for that node:
   try:
      latest_activation = node.activations.latest('id')
   except:
      latest_activation = None
   # Return all active notes:
    all_active_notes = Node.objects.filter(activations__active=True)

更新时间:查看我昨天发布的问题:Django通过最后创建的对象进行反向查询也许这会对你有所帮助。

相关内容

  • 没有找到相关文章

最新更新