KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a model that contains datefield . I'm trying to get query set of that model that contains current week (starts on Monday). So since Django datefield contains simple datetime.date model I assumed to filter by using .isocalendar() . Logically it's exactly what I want without no extra comparisons and calculations by current week day. So what I want to do essentially is force .filter statement to behave in this logic: if model.date.isocalendar()[2] == datetime.date.today().isocalendar()[2] ... Yet how to write it inside filter statement? .filter(model__date__isocalendar=datetime.date.today().isocalendar()) will give wrong results (same as comparing to today not this week). As digging true http://docs.python.org/library/datetime.html I have not noticed any other week day options... Note from documentation: date.isocalendar() Return a 3-tuple, (ISO year, ISO week number, ISO weekday). Update: Although I disliked the solution of using ranges yet it's the best option. However in my case I made a variable that marks the beginning of the week and just look greater or equal value because if I'm looking for a matches for current week. In case of giving the number of the week It would require both ends. today = datetime.date.today() monday = today - datetime.timedelta(days=today.weekday()) ... \ .filter(date__gte=monday)
Tags (comma-separated)
Save Edits
Cancel