在我删除所有对象并尝试触发url之前,一切都运行正常,然后它给了我这个traceback: list index out of range
。我不能使用get
,因为可能有多个对象,当没有对象存在时,使用[0]
和filter
会导致这个错误。我正在尝试获取Ticket模型最近创建的对象(如果已创建),然后执行逻辑,这样,如果客户没有任何票证,则不会发生任何事情,但如果客户有票证,则执行逻辑
型号
class Ticket(models.Model):
date_posted = models.DateField(auto_now_add=True, blank=True, null=True)
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
查看次数
try:
ticket = Ticket.objects.filter(customer=customer).order_by("-id")[0]
now = datetime.now().date()
set_date = ticket.date_posted
check_time = now - set_date <= timedelta(hours=24)
if check_time:
print('working')
else:
print('not working')
except Ticket.DoesNotExist:
ticket = None
context = {"check_time": check_time}
3条答案
按热度按时间hs1rzwqc1#
您还可以执行以下操作:
而不是:
jc3wubiy2#
您不应该获取票证列表并访问一行中的第一个元素,而是应该首先获取列表,然后检查它是否为空,然后获取第一个元素。
zpf6vheq3#
而不是这样:
如果DB中存在任何对象,则使用
exists()
来使用此方法,这是一种非常有效的方法:更新
您可以在筛选函数中进行查询。