I have a model for events which almost always start at 10:00pm, but may on occasion start earlier/later. To make things easy in the admin, I'd like for the time to default to 10pm, but be changeable if needed; the date will need to be set regardless, so it doesn't need a default, but ideally it would default to the current date.
I realize that I can use datetime.now to accomplish the latter, but is it possible (and how) to I set the time to a specific default value?
Update: I'm getting answers faster than I can figure out which one(s) does what I'm trying to accomplish...I probably should have been further along with the app before I asked. Thanks for the help in the meantime!
From the Django documents for Field.default
:
The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.
So do this:
from datetime import datetime, timedelta
def default_start_time():
now = datetime.now()
start = now.replace(hour=22, minute=0, second=0, microsecond=0)
return start if start > now else start + timedelta(days=1)
class Something(models.Model):
timestamp = models.DateTimeField(default=default_start_time)
in case you're interested into setting default value to TimeField : https://code.djangoproject.com/ticket/6754
don't:
start = models.TimeField(default='20:00')
do instead:
import datetime
start = models.TimeField(default=datetime.time(16, 00))
Have you seen this? https://docs.djangoproject.com/en/dev/ref/models/fields/#default
That's probably what you're looking for.
It's also discussed here: Default value for field in Django model
datetime.time(16, 00)
does not work.
Use datetime.time(datetime.now())
instead if you are trying to get the current time or datetime.time(your_date_time)
Where your_date_time = datetime.datetime object
import datetime
default_time = datetime.datetime.now().time()
time_of_visit = models.TimeField(default=default_time)
it will be work fine
Something like this?
import datetime
dt = datetime.now()
dt.hour = 22
dt.minute = 0
dt.second = 0
Hard to be more specific without context.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.