Opened 7 years ago

Last modified 4 years ago

#6439 new New feature

support for filter methods on date field attributes

Reported by: omat@… Owned by: nobody
Component: Database layer (models, ORM) Version: master
Severity: Normal Keywords: datefield, database api, filter methods
Cc: ross@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Exact matches on date field attributes such as:

filter(datefield__month=1)

are supported. For consistency, I think all filter methods on attributes such as:

filter(datefield__month__in=[1, 2, 3])

should also be supported.

OMat

Change History (5)

comment:1 Changed 7 years ago by SmileyChris

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Design decision needed

comment:2 Changed 7 years ago by rossp

  • Cc ross@… added

FWIW I've just encountered this today trying to use this:

class Event(models.Model):
    title = models.CharField(max_length=100)
    event_date = models.DateField()

e = Event(title='My First Event', event_date=date(2008, 08, 01))
e.save()
e2 = Event(title='Second Event', event_date=date(2008, 08, 12))
e2.save()
# Events that happen on or before the 8th of every month: Expect to only get 'My First Event'.
# This will raise: FieldError: Join on field 'event_date' not permitted.
events = Event.objects.filter(event_date__day__lte=8)

comment:3 Changed 4 years ago by julien

  • Type set to New feature

comment:4 Changed 4 years ago by julien

  • Severity set to Normal

comment:5 Changed 4 years ago by Alex

  • Easy pickings unset
  • Triage Stage changed from Design decision needed to Accepted
  • UI/UX unset

Accepted, though I think it's a dude of another ticket. Really this is representative of a large issue about fields defining their own lookups, and chaining those. But I don't know the dupe's #, so I'll let this be open.

Note: See TracTickets for help on using tickets.
Back to Top