2011-02-07 4 views
0

J'ai une liste de Jobs. Ils sont filtrés par job_type et complete = False/True. Ex: Job.objects.filter(job_type=1, complete=False)Filtrer par horodatage dans Requête

Comment puis-je filtrer ces par l'horodatage de l'emploi comme: job.timestamp.strftime(date_filter) == job.today().strftime(date_filter)

Je veux revenir finaly une liste comme ceci:

Job.objects.filter(
    job_type=1, 
    complete=False, 
    timestamp.strftime(date_filter)=datetime.today().strftime(date_filter) 
).distinct() 
+0

Je vois que je peux utiliser timestamp__year = etc, mais qu'en est-timestamp__week ? – Harry

+0

Qu'est-ce que 'date_filter'? –

+0

Sa partie de mon template_tag, {% show_jobs "day"%}: qui sera alors date_filter = jour = '% j' – Harry

Répondre

6

Si je vous comprends questionnez correctement, vous essayez de filtrer tous les travaux qui se produisent un certain jour? calculer Ainsi, une plage de dates, et ensuite utiliser que dans votre filtre:

from datetime import datetime, timedelta 
today = datetime.now().date() 

if date_filter == "day": 
    timestamp_from = datetime.now().date() 
    timestamp_to = datetime.now().date() + timedelta(days=1) 
elif date_filter == "month": 
    # Etc... 
elif date_filter == "year": 
    # Etc... 

Job.objects.filter(
    job_type = 1, 
    complete = False, 
    timestamp__gte = timestamp_from, 
    timestamp__lt = timestamp_to, 
).distinct() 

Sinon, vous pourriez être en mesure de faire quelque chose géniale en utilisant un extra SQL WHERE clause

+0

merci! C'est aide allouer. Je vous en suis reconnaissant – Harry