2016-04-15 1 views
-3

J'essaie de faire un projet en utilisant imbriqué si. Mais ça ne marche pas. Pourquoi? Mon code estimbriqué si ne fonctionne pas dans django

schedule = Schedule.objects.all() 
    for c in schedule : 
     p = c.poll 
     e = c.end_time 
     s = c.start_time 
     n = c.no_of_response 
     now = timezone.now() 
     #phn = Response.objects.filter(poll = p).exclude(sid = 'Null').count() 
     if (c.start_time <= now) & (now <= c.end_time): 
      if n == 0: 
       c.poll.status='Running' 
       c.poll.save() 
+2

Qu'est-ce ne fonctionne pas? S'il vous plaît fournir plus d'informations. – ilse2005

+0

Vous n'avez fourni aucune information sur ce que 'no_of_response' est, (je vais laisser ma réponse là parce que je pense toujours que c'est une erreur) – Sayse

+0

if (c.start_time <= maintenant) & (now <= c.end_time): \t \t \t c.poll.status = 'Running' \t \t \t c.poll.save() Ce code fonctionne. Mais quand je mets if, c'est-à-dire si n == 0:, dans la première condition if, alors le code entier ne fonctionne pas. Pourquoi cela est-il arrivé? – naveen

Répondre

2

Vous faites une comparaison de bits avec &, vous voulez probablement utiliser and (ou &&)

(c.start_time <= now) and (now <= c.end_time) 

ou mieux encore

c.start_time <= now <= c.end_time 
+0

Ce code est correct. Mais ne vérifie pas le si n == 0:. Pourquoi? Désolé pour mon mauvais anglais – naveen

+0

@naveen - Probablement parce que cela n'évalue jamais vrai pour une raison quelconque, vous pouvez essayer d'utiliser 'datetime.now()' à la place – Sayse

+0

Ce code fonctionne. si (c.start_time <= maintenant) et (maintenant <= c.end_time): \t \t \t c.poll.status = 'Running' \t \t \t c.poll.save() – naveen