Skip to content

Instantly share code, notes, and snippets.

@piraka9011
Created November 25, 2023 17:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save piraka9011/c43e78a1d22651cbf10ea0856a1d6208 to your computer and use it in GitHub Desktop.
Save piraka9011/c43e78a1d22651cbf10ea0856a1d6208 to your computer and use it in GitHub Desktop.
Unix Epoch datetime filter
from datetime import datetime
from django.db import models
from django_filters import FilterSet
from django_filters.filters import Filter
from my_app.models import MyModel # FIXME
class UnixEpochDateFilter(Filter):
def filter(self, qs, value):
if value:
try:
# Convert Unix milliseconds epoch to datetime
converted_date = datetime.fromtimestamp(int(value) / 1000)
except (ValueError, TypeError):
return qs.none()
lookup = "%s__%s" % (self.field_name, self.lookup_expr)
return qs.filter(**{lookup: converted_date})
return qs
class MyModelFilter(FilterSet):
class Meta:
model = MyModel
fields = {
"activated_at": ["lte", "gte"],
"deactivated_at": ["lte", "gte"],
"created_at": ["lte", "gte"],
"updated_at": ["lte", "gte"],
}
filter_overrides = {
models.DateTimeField: {
"filter_class": UnixEpochDateFilter,
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment