2009-11-29 4 views
2

Je suis en train de créer une application qui demande à chaque utilisateur de publier un message quotidiennement. Je voudrais afficher les écarts dans les dates où les utilisateurs n'ont pas publié de messages. Comme il ne semble pas judicieux d'insérer des lignes de base de données vides pour les posts vides, j'insère un enregistrement uniquement lorsque l'utilisateur ajoute un post.Afficher les intervalles dans les dates avec Python et Django

Le modèle contient un champ nommé log_date. Je ne sais pas comment afficher les lacunes dans le modèle Django. Voici comment je voudrais que la sortie dans le modèle ressemble:

2009-11-25 
2009-11-24 
2009-11-23 NO ENTRY 
2009-11-22 NO ENTRY 
2009-11-21 

Merci d'avance pour toute aide. Faites-moi savoir si je peux fournir des détails supplémentaires.

Répondre

4

Je recommande de créer un ensemble de dates qu'un utilisateur a publié, puis de commencer à la date la plus proche et d'itérer jusqu'au jour actuel. Pour chaque jour, imprimez la date et vérifiez si un article existe pour ce jour. En utilisant un ensemble, nous pouvons faire cette vérification en temps constant, pas que cela aura probablement de l'importance.

days = set(Post.objects.filter(user=TARGET).values_list("log_date", flat=True)) 
curr = min(days) 
while curr <= date.today(): 
    print curr, 
    if curr not in days: 
     print "NO ENTRY", 
    print 
    curr += timedelta(days=1) 

Je me rends compte que ce n'est pas le code du modèle Django, mais cela devrait vous donner un bon point de départ pour construire un bon modèle.

+1

Merci, Eli! Cela aide définitivement. Je pense que je suis de retour sur la piste. – geoffa

+0

Ne serait-ce pas vraiment cher si cet utilisateur posté beaucoup de messages? –

Questions connexes