mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	magic-removal: Updated model tests for new syntax: 'basic', 'custom_managers' and 'custom_columns'
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2151 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -11,8 +11,9 @@ class Article(models.Model): | ||||
|     pub_date = models.DateTimeField() | ||||
|  | ||||
| API_TESTS = """ | ||||
|  | ||||
| # No articles are in the system yet. | ||||
| >>> Article.objects.get_list() | ||||
| >>> list(Article.objects) | ||||
| [] | ||||
|  | ||||
| # Create an Article. | ||||
| @@ -37,52 +38,58 @@ datetime.datetime(2005, 7, 28, 0, 0) | ||||
| >>> a.headline = 'Area woman programs in Python' | ||||
| >>> a.save() | ||||
|  | ||||
| # get_list() displays all the articles in the database. Note that the article | ||||
| # Listing objects displays all the articles in the database. Note that the article | ||||
| # is represented by "<Article object>", because we haven't given the Article | ||||
| # model a __repr__() method. | ||||
| >>> Article.objects.get_list() | ||||
| >>> list(Article.objects) | ||||
| [<Article object>] | ||||
|  | ||||
| # Django provides a rich database lookup API that's entirely driven by | ||||
| # keyword arguments. | ||||
| >>> Article.objects.get_object(id__exact=1) | ||||
| >>> Article.objects.get(id__exact=1) | ||||
| <Article object> | ||||
| >>> Article.objects.get_object(headline__startswith='Area woman') | ||||
| >>> Article.objects.get(headline__startswith='Area woman') | ||||
| <Article object> | ||||
| >>> Article.objects.get_object(pub_date__year=2005) | ||||
| >>> Article.objects.get(pub_date__year=2005) | ||||
| <Article object> | ||||
| >>> Article.objects.get_object(pub_date__year=2005, pub_date__month=7) | ||||
| >>> Article.objects.get(pub_date__year=2005, pub_date__month=7) | ||||
| <Article object> | ||||
| >>> Article.objects.get_object(pub_date__year=2005, pub_date__month=7, pub_date__day=28) | ||||
| >>> Article.objects.get(pub_date__year=2005, pub_date__month=7, pub_date__day=28) | ||||
| <Article object> | ||||
|  | ||||
| >>> Article.objects.get_list(pub_date__year=2005) | ||||
| # You can omit __exact if you want | ||||
| >>> Article.objects.get(id=1) | ||||
| <Article object> | ||||
| >>> Article.objects.get(headline='Area woman programs in Python') | ||||
| <Article object> | ||||
|  | ||||
| >>> list(Article.objects.filter(pub_date__year=2005)) | ||||
| [<Article object>] | ||||
| >>> Article.objects.get_list(pub_date__year=2004) | ||||
| >>> list(Article.objects.filter(pub_date__year=2004)) | ||||
| [] | ||||
| >>> Article.objects.get_list(pub_date__year=2005, pub_date__month=7) | ||||
| >>> list(Article.objects.filter(pub_date__year=2005, pub_date__month=7)) | ||||
| [<Article object>] | ||||
|  | ||||
| # Django raises an ArticleDoesNotExist exception for get_object() | ||||
| >>> Article.objects.get_object(id__exact=2) | ||||
| # Django raises an ArticleDoesNotExist exception for get() | ||||
| >>> Article.objects.get(id__exact=2) | ||||
| Traceback (most recent call last): | ||||
|     ... | ||||
| DoesNotExist: Article does not exist for {'id__exact': 2} | ||||
|  | ||||
| >>> Article.objects.get_object(pub_date__year=2005, pub_date__month=8) | ||||
| >>> Article.objects.get(pub_date__year=2005, pub_date__month=8) | ||||
| Traceback (most recent call last): | ||||
|     ... | ||||
| DoesNotExist: Article does not exist for ... | ||||
|  | ||||
| # Lookup by a primary key is the most common case, so Django provides a | ||||
| # shortcut for primary-key exact lookups. | ||||
| # The following is identical to articles.get_object(id__exact=1). | ||||
| >>> Article.objects.get_object(pk=1) | ||||
| # The following is identical to articles.get(id__exact=1). | ||||
| >>> Article.objects.get(pk=1) | ||||
| <Article object> | ||||
|  | ||||
| # Model instances of the same type and same ID are considered equal. | ||||
| >>> a = Article.objects.get_object(pk=1) | ||||
| >>> b = Article.objects.get_object(pk=1) | ||||
| >>> a = Article.objects.get(pk=1) | ||||
| >>> b = Article.objects.get(pk=1) | ||||
| >>> a == b | ||||
| True | ||||
|  | ||||
| @@ -139,12 +146,12 @@ TypeError: 'foo' is an invalid keyword argument for this function | ||||
| # give it. | ||||
| >>> a7 = Article(headline='Article 7', pub_date=datetime(2005, 7, 31, 12, 30)) | ||||
| >>> a7.save() | ||||
| >>> Article.objects.get_object(id__exact=7).pub_date | ||||
| >>> Article.objects.get(id__exact=7).pub_date | ||||
| datetime.datetime(2005, 7, 31, 12, 30) | ||||
|  | ||||
| >>> a8 = Article(headline='Article 8', pub_date=datetime(2005, 7, 31, 12, 30, 45)) | ||||
| >>> a8.save() | ||||
| >>> Article.objects.get_object(id__exact=8).pub_date | ||||
| >>> Article.objects.get(id__exact=8).pub_date | ||||
| datetime.datetime(2005, 7, 31, 12, 30, 45) | ||||
| >>> a8.id | ||||
| 8L | ||||
| @@ -160,40 +167,65 @@ datetime.datetime(2005, 7, 31, 12, 30, 45) | ||||
|  | ||||
| >>> a7 == a8 | ||||
| False | ||||
| >>> a8 == Article.objects.get_object(id__exact=8) | ||||
| >>> a8 == Article.objects.get(id__exact=8) | ||||
| True | ||||
| >>> a7 != a8 | ||||
| True | ||||
| >>> Article.objects.get_object(id__exact=8) != Article.objects.get_object(id__exact=7) | ||||
| >>> Article.objects.get(id__exact=8) != Article.objects.get(id__exact=7) | ||||
| True | ||||
| >>> Article.objects.get_object(id__exact=8) == Article.objects.get_object(id__exact=7) | ||||
| >>> Article.objects.get(id__exact=8) == Article.objects.get(id__exact=7) | ||||
| False | ||||
|  | ||||
| >>> Article.objects.get_pub_date_list('year') | ||||
| [datetime.datetime(2005, 1, 1, 0, 0)] | ||||
| >>> Article.objects.get_pub_date_list('month') | ||||
| [datetime.datetime(2005, 7, 1, 0, 0)] | ||||
| >>> Article.objects.get_pub_date_list('day') | ||||
| [datetime.datetime(2005, 7, 28, 0, 0), datetime.datetime(2005, 7, 29, 0, 0), datetime.datetime(2005, 7, 30, 0, 0), datetime.datetime(2005, 7, 31, 0, 0)] | ||||
| >>> Article.objects.get_pub_date_list('day', order='ASC') | ||||
| [datetime.datetime(2005, 7, 28, 0, 0), datetime.datetime(2005, 7, 29, 0, 0), datetime.datetime(2005, 7, 30, 0, 0), datetime.datetime(2005, 7, 31, 0, 0)] | ||||
| >>> Article.objects.get_pub_date_list('day', order='DESC') | ||||
| [datetime.datetime(2005, 7, 31, 0, 0), datetime.datetime(2005, 7, 30, 0, 0), datetime.datetime(2005, 7, 29, 0, 0), datetime.datetime(2005, 7, 28, 0, 0)] | ||||
| ## TODO - what should these be converted to? | ||||
|  | ||||
| # Try some bad arguments to __get_date_list | ||||
| >>> Article.objects.get_pub_date_list('badarg') | ||||
| Traceback (most recent call last): | ||||
|     ... | ||||
| AssertionError: 'kind' must be one of 'year', 'month' or 'day'. | ||||
| >>> Article.objects.get_pub_date_list(order='ASC') | ||||
| Traceback (most recent call last): | ||||
|     ... | ||||
| TypeError: __get_date_list() takes at least 3 non-keyword arguments (2 given) | ||||
| ##>>> Article.objects.get_pub_date_list('year') | ||||
| ##[datetime.datetime(2005, 1, 1, 0, 0)] | ||||
| ##>>> Article.objects.get_pub_date_list('month') | ||||
| ##[datetime.datetime(2005, 7, 1, 0, 0)] | ||||
| ##>>> Article.objects.get_pub_date_list('day') | ||||
| ##[datetime.datetime(2005, 7, 28, 0, 0), datetime.datetime(2005, 7, 29, 0, 0), datetime.datetime(2005, 7, 30, 0, 0), datetime.datetime(2005, 7, 31, 0, 0)] | ||||
| ##>>> Article.objects.get_pub_date_list('day', order='ASC') | ||||
| ##[datetime.datetime(2005, 7, 28, 0, 0), datetime.datetime(2005, 7, 29, 0, 0), datetime.datetime(2005, 7, 30, 0, 0), datetime.datetime(2005, 7, 31, 0, 0)] | ||||
| ##>>> Article.objects.get_pub_date_list('day', order='DESC') | ||||
| ##[datetime.datetime(2005, 7, 31, 0, 0), datetime.datetime(2005, 7, 30, 0, 0), datetime.datetime(2005, 7, 29, 0, 0), datetime.datetime(2005, 7, 28, 0, 0)] | ||||
| ## | ||||
| ### Try some bad arguments to __get_date_list | ||||
| ##>>> Article.objects.get_pub_date_list('badarg') | ||||
| ##Traceback (most recent call last): | ||||
| ##    ... | ||||
| ##AssertionError: 'kind' must be one of 'year', 'month' or 'day'. | ||||
| ##>>> Article.objects.get_pub_date_list(order='ASC') | ||||
| ##Traceback (most recent call last): | ||||
| ##    ... | ||||
| ##TypeError: __get_date_list() takes at least 3 non-keyword arguments (2 given) | ||||
|  | ||||
| # You can combine queries with & and | | ||||
| >>> s1 = Article.objects.filter(id__exact=1) | ||||
| >>> s2 = Article.objects.filter(id__exact=2) | ||||
| >>> tmp = [a.id for a in list(s1 | s2)] | ||||
| >>> tmp.sort() | ||||
| >>> tmp | ||||
| [1L, 2L] | ||||
| >>> list(s1 & s2) | ||||
| [] | ||||
|  | ||||
| # You can get the number of objects like this: | ||||
| >>> len(Article.objects.filter(id__exact=1)) | ||||
| 1 | ||||
|  | ||||
| # You can get items using index and slice notation: | ||||
| >>> Article.objects[0] | ||||
| <Article object> | ||||
| >>> Article.objects[1:2] | ||||
| [<Article object>, <Article object>] | ||||
| >>> s3 = Article.objects.filter(id__exact=3) | ||||
| >>> (s1 | s2 | s3)[::2] | ||||
| [<Article object>, <Article object>] | ||||
|  | ||||
|  | ||||
| # An Article instance doesn't have access to the "objects" attribute. | ||||
| # That is only available as a class method. | ||||
| >>> a7.objects.get_list() | ||||
| >>> list(a7.objects) | ||||
| Traceback (most recent call last): | ||||
|     ... | ||||
| AttributeError: Manager isn't accessible via Article instances | ||||
| @@ -204,10 +236,10 @@ Traceback (most recent call last): | ||||
| AttributeError: Manager isn't accessible via Article instances | ||||
|  | ||||
| # Bulk delete test: How many objects before and after the delete? | ||||
| >>> Article.objects.get_count() | ||||
| >>> Article.objects.count() | ||||
| 8L | ||||
| >>> Article.objects.delete(id__lte=4) | ||||
| >>> Article.objects.get_count() | ||||
| >>> Article.objects.count() | ||||
| 4L | ||||
|  | ||||
| >>> Article.objects.delete() | ||||
| @@ -216,7 +248,7 @@ Traceback (most recent call last): | ||||
| TypeError: SAFETY MECHANISM: Specify DELETE_ALL=True if you actually want to delete all data. | ||||
|  | ||||
| >>> Article.objects.delete(DELETE_ALL=True) | ||||
| >>> Article.objects.get_count() | ||||
| >>> Article.objects.count() | ||||
| 0L | ||||
|  | ||||
| """ | ||||
| @@ -230,7 +262,7 @@ if building_docs or settings.DATABASE_ENGINE == 'postgresql': | ||||
| # In PostgreSQL, microsecond-level precision is available. | ||||
| >>> a9 = Article(headline='Article 9', pub_date=datetime(2005, 7, 31, 12, 30, 45, 180)) | ||||
| >>> a9.save() | ||||
| >>> Article.objects.get_object(id__exact=9).pub_date | ||||
| >>> Article.objects.get(id__exact=9).pub_date | ||||
| datetime.datetime(2005, 7, 31, 12, 30, 45, 180) | ||||
| """ | ||||
|  | ||||
| @@ -240,7 +272,7 @@ if building_docs or settings.DATABASE_ENGINE == 'mysql': | ||||
| # microsecond-level precision once the data is saved. | ||||
| >>> a9 = Article(headline='Article 9', pub_date=datetime(2005, 7, 31, 12, 30, 45, 180)) | ||||
| >>> a9.save() | ||||
| >>> Article.objects.get_object(id__exact=9).pub_date | ||||
| >>> Article.objects.get(id__exact=9).pub_date | ||||
| datetime.datetime(2005, 7, 31, 12, 30, 45) | ||||
| """ | ||||
|  | ||||
| @@ -249,7 +281,7 @@ API_TESTS += """ | ||||
| # You can manually specify the primary key when creating a new objet | ||||
| >>> a101 = Article(id=101, headline='Article 101', pub_date=datetime(2005, 7, 31, 12, 30, 45)) | ||||
| >>> a101.save() | ||||
| >>> a101 = Article.objects.get_object(pk=101) | ||||
| >>> a101 = Article.objects.get(pk=101) | ||||
| >>> a101.headline | ||||
| 'Article 101' | ||||
| """ | ||||
|   | ||||
| @@ -23,21 +23,21 @@ API_TESTS = """ | ||||
| >>> p.id | ||||
| 1 | ||||
|  | ||||
| >>> Person.objects.get_list() | ||||
| >>> list(Person.objects) | ||||
| [John Smith] | ||||
|  | ||||
| >>> Person.objects.get_list(first_name__exact='John') | ||||
| >>> list(Person.objects.filter(first_name__exact='John')) | ||||
| [John Smith] | ||||
|  | ||||
| >>> Person.objects.get_object(first_name__exact='John') | ||||
| >>> Person.objects.get(first_name__exact='John') | ||||
| John Smith | ||||
|  | ||||
| >>> Person.objects.get_list(firstname__exact='John') | ||||
| >>> list(Person.objects.filter(firstname__exact='John')) | ||||
| Traceback (most recent call last): | ||||
|     ... | ||||
| TypeError: Cannot resolve keyword 'firstname' into field | ||||
|  | ||||
| >>> p = Person.objects.get_object(last_name__exact='Smith') | ||||
| >>> p = Person.objects.get(last_name__exact='Smith') | ||||
| >>> p.first_name | ||||
| 'John' | ||||
| >>> p.last_name | ||||
|   | ||||
| @@ -8,7 +8,7 @@ from django.db import models | ||||
|  | ||||
| class PersonManager(models.Manager): | ||||
|     def get_fun_people(self): | ||||
|         return self.get_list(fun__exact=True) | ||||
|         return list(self.filter(fun=True)) | ||||
|  | ||||
| class Person(models.Model): | ||||
|     first_name = models.CharField(maxlength=30) | ||||
| @@ -22,9 +22,9 @@ class Person(models.Model): | ||||
| # An example of providing a custom manager that isn't called "objects". | ||||
|  | ||||
| class PublishedBookManager(models.Manager): | ||||
|     def get_list(self, **kwargs): | ||||
|         kwargs['is_published__exact'] = True | ||||
|         return models.Manager.get_list(self, **kwargs) | ||||
|     def __init__(self): | ||||
|         super(PublishedBookManager, self).__init__() | ||||
|         self._set_core_filter(is_published__exact=True) | ||||
|  | ||||
| class Book(models.Model): | ||||
|     title = models.CharField(maxlength=50) | ||||
| @@ -38,9 +38,9 @@ class Book(models.Model): | ||||
| # An example of providing multiple custom managers. | ||||
|  | ||||
| class FastCarManager(models.Manager): | ||||
|     def get_list(self, **kwargs): | ||||
|         kwargs['top_speed__gt'] = 150 | ||||
|         return models.Manager.get_list(self, **kwargs) | ||||
|     def __init__(self): | ||||
|         super(FastCarManager, self).__init__() | ||||
|         self._set_core_filter(top_speed__gt=150) | ||||
|  | ||||
| class Car(models.Model): | ||||
|     name = models.CharField(maxlength=10) | ||||
| @@ -72,20 +72,20 @@ Traceback (most recent call last): | ||||
|     ... | ||||
| AttributeError: type object 'Book' has no attribute 'objects' | ||||
|  | ||||
| >>> Book.published_objects.get_list() | ||||
| >>> list(Book.published_objects) | ||||
| [How to program] | ||||
|  | ||||
| >>> c1 = Car(name='Corvette', mileage=21, top_speed=180) | ||||
| >>> c1.save() | ||||
| >>> c2 = Car(name='Neon', mileage=31, top_speed=100) | ||||
| >>> c2.save() | ||||
| >>> Car.cars.get_list(order_by=('name',)) | ||||
| >>> list(Car.cars.order_by('name')) | ||||
| [Corvette, Neon] | ||||
| >>> Car.fast_cars.get_list() | ||||
| >>> list(Car.fast_cars) | ||||
| [Corvette] | ||||
|  | ||||
| # Each model class gets a "_default_manager" attribute, which is a reference | ||||
| # to the first manager defined in the class. In this case, it's "cars". | ||||
| >>> Car._default_manager.get_list(order_by=('name',)) | ||||
| >>> list(Car._default_manager.order_by('name')) | ||||
| [Corvette, Neon] | ||||
| """ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user