Reputation: 2347
I have a date field called "birthdate" and property called "lifespan" in a django model.
Field
birthdate = models.DateField(blank=True, null=True)
Property
@property
def lifespan(self):
return '%s - present' % self.birthdate
Currently lifespan returns the date in the "yyyy-mm-dd" format.
How can I changed this date format to "mm/dd/yyyy"?
I know how to do it in a django template with a filter but wanted to see if there was a similar "filter" that I can use in a Django model.
I appreciate the feedback.
Upvotes: 7
Views: 18916
Reputation: 37364
For full control, use strftime
:
@property
def lifespan(self):
return '%s - present' % self.birthdate.strftime('%m/%d/%Y')
strftime
doesn't have all the formatting options that Django's date
filter does, so if you want one of those you could call the filter as a function:
from django.template.defaultfilters import date
@property
def lifespan(self):
return '%s - present' % date(self.birthdate, "n/j/Y")
That would omit the leading zeros, and would let you use your DATE_FORMAT
settings variable or other predefined options.
Upvotes: 9
Reputation: 827
Maybe override the admin:
Say, the model is called PersonDetail, then in admin.py
class PersonDetailAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {'input_formats': ('%m/%d/%Y',)},
}
Upvotes: 0