我在引用django子查询的外部字段时遇到了困难,这在SQL中很容易做到。我有两种型号:
class Modem(models.Model):
mac = Models.LowerCaseCharField
class DHCPEvent(models.Model):
timestamp = models.DateTimeField() # date released
modem = models.ForeignKey(Modem)
ip = models.LowerCaseCharField()
IP分配给给定调制解调器a的时间窗口为:[IP分配给调制解调器a时的时间戳,IP分配给另一个调制解调器时的时间戳)。我希望能够查询与搜索时间窗口重叠的特定调制解调器的所有IP分配(modem,from_date,to_date->;[ips])。在
为此,我想我需要在时间窗口结束之前找到分配给调制解调器的DHCPEvent,然后,对于每个事件,在搜索时间窗口开始之前,确认其他地方没有分配给它的IP的DHCPEvent。这定义了IP到调制解调器的分配与搜索窗口重叠。但我不知道在Django怎么做。到目前为止,我得到的是:
^{pr2}$有两个问题:
如有任何建议,我们将不胜感激。谢谢!在
编辑:我现在已经用SQL编写了这个查询,这可能会让我在Django中实现的目标更加清晰:
select
*
from
"MODEM" modem
inner join "DHCPEVENT" dhcp_event_assign
on modem."ID" = dhcp_event_assign."MODEM_ID"
where
modem."ID" = %(id)s
dhcp_event_assign."TIMESTAMP" <= %(to_date)s and
not exists(
select
*
from
"DHCPEVENT" dhcp_event_next
where
dhcp_event_next."REMOTE_ADDRESS" = dhcp_event_assign."REMOTE_ADDRESS"
and dhcp_event_next."TIMESTAMP" > dhcp_event_assign."TIMESTAMP"
and dhcp_event_next."TIMESTAMP" <= %(from_date)s
and not ( dhcp_event_next."MODEM_ID" = modem."ID" )
)
目前没有回答
相关问题 更多 >
编程相关推荐