【发布时间】:2020-05-04 15:13:29
【问题描述】:
我看到很多类似的查询,但似乎没有一个适用于我所追求的,
我有一张这样的桌子:
class BGPData(models.Model):
subnet = models.ForeignKey(Subnet, verbose_name="Subnet", on_delete=models.CASCADE, blank=True, null=True)
bgp_peer_as = models.CharField(max_length=20, verbose_name='BGP Peer AS', blank=True, null=True)
bgp_session = models.CharField(max_length=10, verbose_name='BGP Session', blank=True, null=True)
bgp_routes = models.CharField(max_length=10, verbose_name='BGP Routes Received', blank=True, null=True)
timestamp = models.DateTimeField(auto_now=True, blank=True, null=True)
目标: 我只想获取子网上每个外键的最新记录。
目前为止的尝试:-
bgp_data_query = BGPData.objects.filter(subnet__get_bgp=True,subnet__wb_bgp=True) \
.annotate(last_updated=Cast(TruncSecond('timestamp', DateTimeField()), CharField()))
d = BGPData.objects.annotate(max_timestamp=Max('timestamp')).filter(timestamp=F('max_timestamp'))
有些东西我还没到这里,但我不确定它是什么......
谢谢
所以如果我的表包含:
subnet_id | routes | timestamp
1 | 10 | 01-01-20 17:30
1 | 10 | 01-01-20 17:20
1 | 10 | 01-01-20 17:10
2 | 20 | 01-01-20 17:30
我会回来的
subnet_id | routes | timestamp
1 | 10 | 01-01-20 17:30
2 | 20 | 01-01-20 17:30
【问题讨论】:
-
很难理解您要查找的内容。是否要使用
BGPData模型中的最新时间戳注释的Subnet对象? -
抱歉,我正在从 bgpdata 表中查找每个 unqiue subnet_id 的最新记录
-
我添加了示例数据以帮助清理它
标签: django python-3.x django-queryset