I have a model like this
class Maca(models.Model):
created_at = models.DateTimeField(
auto_now_add=True
)
Now I want in the views.py file to get all the entries that have created today,
I'm trying this
Maca.objects.filter(created_at=datetime.today().date())
But this looks for the clock that object is created too.
P.S I can't change the field in model because I need the clock too in other purposes.
Can someone help me to select all entries that have been created today?
Thanks in advance
CodePudding user response:
there many ways to get today data from database.
year = datetime.datetime.now().strftime('%y')
month = datetime.datetime.now().strftime('%m')
day = datetime.datetime.now().strftime('%d')
filtereddata = Maca.objects.filter(created_at__year=year,created_at__month=month, created_at__day=day )
the second way is to filter with contains
filtereddata = Maca.objects.filter(created_at__contains=datetime.today().date())
if datetime.datetime not work. just remove one datetime only use single datetime
CodePudding user response:
I think the main reason is because you trying to compare dt
field with date
.
You can use prefixes for a field.
Or you can compare your 'today' value as dt
(just an example):
today = datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
records = Maca.objects.filter(created_at >= today)
CodePudding user response:
You have to just write a valid filter like this :
from datetime import datetime
today = datetime.today()
year = today.year
month = today.month
day = today.day
meca = Meca.objects.filter(created_at__year=year,
created_at__month=month, created_at__day=day)