Added two more model test modules -- get_latest and lookup
git-svn-id: http://code.djangoproject.com/svn/django/trunk@339 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d4a9a4f83a
commit
85d2b12bdf
|
@ -1 +1 @@
|
|||
__all__ = ['basic', 'repr', 'custom_methods', 'many_to_one', 'many_to_many', 'ordering']
|
||||
__all__ = ['basic', 'repr', 'custom_methods', 'many_to_one', 'many_to_many', 'ordering', 'lookup', 'get_latest']
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
"""
|
||||
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
|
||||
"""
|
|
@ -0,0 +1,67 @@
|
|||
"""
|
||||
7. The lookup API
|
||||
|
||||
"""
|
||||
|
||||
from django.core import meta
|
||||
|
||||
class Article(meta.Model):
|
||||
fields = (
|
||||
meta.CharField('headline', maxlength=100),
|
||||
meta.DateTimeField('pub_date'),
|
||||
)
|
||||
ordering = ('-pub_date', 'headline')
|
||||
|
||||
def __repr__(self):
|
||||
return self.headline
|
||||
|
||||
API_TESTS = """
|
||||
# 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_iterator() is just like get_list(), but it's a generator.
|
||||
>>> for a in articles.get_iterator():
|
||||
... print a.headline
|
||||
Article 4
|
||||
Article 2
|
||||
Article 3
|
||||
Article 1
|
||||
|
||||
# get_iterator() takes the same lookup arguments as get_list().
|
||||
>>> for a in articles.get_iterator(headline__endswith='4'):
|
||||
... print a.headline
|
||||
Article 4
|
||||
|
||||
# get_count() returns the number of objects matching search criteria.
|
||||
>>> articles.get_count()
|
||||
4L
|
||||
>>> articles.get_count(pub_date__exact=datetime(2005, 7, 27))
|
||||
2L
|
||||
>>> articles.get_count(headline__startswith='Blah blah')
|
||||
0L
|
||||
|
||||
# get_in_bulk() takes a list of IDs and returns a dictionary mapping IDs
|
||||
# to objects.
|
||||
>>> articles.get_in_bulk([1, 2])
|
||||
{1: Article 1, 2: Article 2}
|
||||
>>> articles.get_in_bulk([3])
|
||||
{3: Article 3}
|
||||
>>> articles.get_in_bulk([1000])
|
||||
{}
|
||||
|
||||
# Every DateField and DateTimeField creates get_next_by_FOO() and
|
||||
# get_previous_by_FOO() methods.
|
||||
>>> a3.get_next_by_pub_date()
|
||||
Article 4
|
||||
>>> a2.get_previous_by_pub_date()
|
||||
Article 1
|
||||
|
||||
"""
|
Loading…
Reference in New Issue