45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
"""
|
||
|
8. get_latest_by
|
||
|
|
||
|
Models can have a ``get_latest_by`` attribute, which should be set to the name
|
||
|
of a DateField or DateTimeField. If ``get_latest_by`` exists, the model's
|
||
|
module will get a ``get_latest()`` function, which will return the latest
|
||
|
object in the database according to that field. "Latest" means "having the
|
||
|
date farthest into the future."
|
||
|
"""
|
||
|
|
||
|
from django.core import meta
|
||
|
|
||
|
class Article(meta.Model):
|
||
|
fields = (
|
||
|
meta.CharField('headline', maxlength=100),
|
||
|
meta.DateTimeField('pub_date'),
|
||
|
)
|
||
|
get_latest_by = 'pub_date'
|
||
|
|
||
|
def __repr__(self):
|
||
|
return self.headline
|
||
|
|
||
|
API_TESTS = """
|
||
|
# Because no Articles exist yet, get_latest() raises ArticleDoesNotExist.
|
||
|
>>> articles.get_latest()
|
||
|
Traceback (most recent call last):
|
||
|
...
|
||
|
ArticleDoesNotExist: Article does not exist for {'order_by': ('-pub_date',), 'limit': 1}
|
||
|
|
||
|
# Create a couple of Articles.
|
||
|
>>> from datetime import datetime
|
||
|
>>> a1 = articles.Article(id=None, headline='Article 1', pub_date=datetime(2005, 7, 26))
|
||
|
>>> a1.save()
|
||
|
>>> a2 = articles.Article(id=None, headline='Article 2', pub_date=datetime(2005, 7, 27))
|
||
|
>>> a2.save()
|
||
|
>>> a3 = articles.Article(id=None, headline='Article 3', pub_date=datetime(2005, 7, 27))
|
||
|
>>> a3.save()
|
||
|
>>> a4 = articles.Article(id=None, headline='Article 4', pub_date=datetime(2005, 7, 28))
|
||
|
>>> a4.save()
|
||
|
|
||
|
# Get the latest Article.
|
||
|
>>> articles.get_latest()
|
||
|
Article 4
|
||
|
"""
|