我试着比较两个日期时间.time视图中某些python代码中的变量。在
p_目标时间\u开始是一个时间场
b_目标时间\u开始也是一个时间场
slot_start = p_obj.time_start
whereami = slot_start
...
for b_obj in mydata:
while (b_obj.time_start > whereami):
...
...
当我运行视图时,我得到一个类型错误 无法比较日期时间.time内置函数或方法
看看django调试,我可以看到:
^{pr2}$但是
slot_start is datetime.time(10, 0)
我相信我的问题是由于比较的评估方式。在
我尝试过各种排列,虽然我可以独立地得到两个变量来解析日期时间.time(就像slot_start一样)我看不到在while比较之前或期间让他们都这么做。有没有办法在比较之前强制进行评估?在
我认为这可能与第一个被评估的方法有关,然后是结果(a日期时间.time)与第二种方法(即方法)不可比。在比较之前,我是否缺少一些简单的语法来让这两个元素求值?在
奇怪地
if (whereami < b_obj.time_start):
不会抛出任何错误,并且看起来工作正常(因为它执行预期的比较)。在
按要求添加更多信息:
class Booking(models.Model):
....
practavail = models.ForeignKey(PractAvail, on_delete=models.PROTECT, blank=False)
time_start = models.TimeField("Start Time", blank=False)
time_finish = models.TimeField("Finish Time", blank=False)
....
class PractAvail(models.Model):
....
time_start = models.TimeField("Start Time", blank=False)
time_finish = models.TimeField("Finish Time", blank=False)
....
然后在我看来(跳过不必要的部分):
p_avails = PractAvail.objects.filter(date=inputdate).order_by('time_start')
for p_obj in p_avails:
mydata['bookings'][p_obj.pk] = p_obj.booking_set.all().order_by('time_start')
for b_obj in mydata['bookings'][p_obj.pk]:
然后是上面的while循环。在
我还发现我的代码可以很好地与:
if (b_obj.time_start > whereami):
yesdoloop = True
else:
yesdoloop = False
while yesdoloop:
...do stuff, including updating whereami...
if (b_obj.time_start > whereami):
yesdoloop = True
else:
yesdoloop = False
所以,与if相比,while与if的比较肯定有些不同之处(我想?!)在
目前没有回答
相关问题 更多 >
编程相关推荐