Cleaned up numbering with model unit tests
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3031 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a846155118
commit
02fcfe6216
|
@ -1,7 +1,12 @@
|
||||||
"""
|
"""
|
||||||
XXX. Callable defaults
|
31. Callable defaults
|
||||||
|
|
||||||
???
|
You can pass callable objects as the ``default`` parameter to a field. When
|
||||||
|
the object is created without an explicit value passed in, Django will call
|
||||||
|
the method to determine the default value.
|
||||||
|
|
||||||
|
This example uses ``datetime.datetime.now`` as the default for the ``pub_date``
|
||||||
|
field.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -9,9 +14,9 @@ from datetime import datetime
|
||||||
|
|
||||||
class Article(models.Model):
|
class Article(models.Model):
|
||||||
headline = models.CharField(maxlength=100, default='Default headline')
|
headline = models.CharField(maxlength=100, default='Default headline')
|
||||||
pub_date = models.DateTimeField(default = datetime.now)
|
pub_date = models.DateTimeField(default=datetime.now)
|
||||||
|
|
||||||
def __repr__(self):
|
def __str__(self):
|
||||||
return self.headline
|
return self.headline
|
||||||
|
|
||||||
API_TESTS = """
|
API_TESTS = """
|
||||||
|
@ -43,6 +48,4 @@ API_TESTS = """
|
||||||
>>> d = now - a.pub_date
|
>>> d = now - a.pub_date
|
||||||
>>> d.seconds < 5
|
>>> d.seconds < 5
|
||||||
True
|
True
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
"""
|
"""
|
||||||
27. Many-to-many and many-to-one relationships to the same table
|
28. Many-to-many and many-to-one relationships to the same table
|
||||||
|
|
||||||
This is a response to bug #1535
|
|
||||||
|
|
||||||
|
Make sure to set ``related_name`` if you use relationships to the same table.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -14,8 +13,9 @@ class Issue(models.Model):
|
||||||
num = models.IntegerField()
|
num = models.IntegerField()
|
||||||
cc = models.ManyToManyField(User, blank=True, related_name='test_issue_cc')
|
cc = models.ManyToManyField(User, blank=True, related_name='test_issue_cc')
|
||||||
client = models.ForeignKey(User, related_name='test_issue_client')
|
client = models.ForeignKey(User, related_name='test_issue_client')
|
||||||
def __repr__(self):
|
|
||||||
return "<Issue %d>" % (self.num,)
|
def __str__(self):
|
||||||
|
return str(self.num)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('num',)
|
ordering = ('num',)
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
"""
|
"""
|
||||||
26. Many-to-many relationships between the same two tables
|
27. Many-to-many relationships between the same two tables
|
||||||
|
|
||||||
In this example, A Person can have many friends, who are also people. Friendship is a
|
In this example, A Person can have many friends, who are also people. Friendship is a
|
||||||
symmetrical relationshiup - if I am your friend, you are my friend.
|
symmetrical relationshiup - if I am your friend, you are my friend.
|
||||||
|
|
||||||
A person can also have many idols - but while I may idolize you, you may not think
|
A person can also have many idols - but while I may idolize you, you may not think
|
||||||
the same of me. 'Idols' is an example of a non-symmetrical m2m field. Only recursive
|
the same of me. 'Idols' is an example of a non-symmetrical m2m field. Only recursive
|
||||||
m2m fields may be non-symmetrical, and they are symmetrical by default.
|
m2m fields may be non-symmetrical, and they are symmetrical by default.
|
||||||
|
|
||||||
This test validates that the m2m table will create a mangled name for the m2m table if
|
This test validates that the m2m table will create a mangled name for the m2m table if
|
||||||
there will be a clash, and tests that symmetry is preserved where appropriate.
|
there will be a clash, and tests that symmetry is preserved where appropriate.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -40,7 +40,7 @@ API_TESTS = """
|
||||||
>>> d.friends.add(a,c)
|
>>> d.friends.add(a,c)
|
||||||
|
|
||||||
# Who is friends with Anne?
|
# Who is friends with Anne?
|
||||||
>>> a.friends.all()
|
>>> a.friends.all()
|
||||||
[Bill, Chuck, David]
|
[Bill, Chuck, David]
|
||||||
|
|
||||||
# Who is friends with Bill?
|
# Who is friends with Bill?
|
||||||
|
@ -52,14 +52,14 @@ API_TESTS = """
|
||||||
[Anne, David]
|
[Anne, David]
|
||||||
|
|
||||||
# Who is friends with David?
|
# Who is friends with David?
|
||||||
>>> d.friends.all()
|
>>> d.friends.all()
|
||||||
[Anne, Chuck]
|
[Anne, Chuck]
|
||||||
|
|
||||||
# Bill is already friends with Anne - add Anne again, but in the reverse direction
|
# Bill is already friends with Anne - add Anne again, but in the reverse direction
|
||||||
>>> b.friends.add(a)
|
>>> b.friends.add(a)
|
||||||
|
|
||||||
# Who is friends with Anne?
|
# Who is friends with Anne?
|
||||||
>>> a.friends.all()
|
>>> a.friends.all()
|
||||||
[Bill, Chuck, David]
|
[Bill, Chuck, David]
|
||||||
|
|
||||||
# Who is friends with Bill?
|
# Who is friends with Bill?
|
||||||
|
@ -70,7 +70,7 @@ API_TESTS = """
|
||||||
>>> b.friends.remove(a)
|
>>> b.friends.remove(a)
|
||||||
|
|
||||||
# Who is friends with Anne?
|
# Who is friends with Anne?
|
||||||
>>> a.friends.all()
|
>>> a.friends.all()
|
||||||
[Chuck, David]
|
[Chuck, David]
|
||||||
|
|
||||||
# Who is friends with Bill?
|
# Who is friends with Bill?
|
||||||
|
@ -81,7 +81,7 @@ API_TESTS = """
|
||||||
>>> a.friends.clear()
|
>>> a.friends.clear()
|
||||||
|
|
||||||
# Who is friends with Anne?
|
# Who is friends with Anne?
|
||||||
>>> a.friends.all()
|
>>> a.friends.all()
|
||||||
[]
|
[]
|
||||||
|
|
||||||
# Reverse relationships should also be gone
|
# Reverse relationships should also be gone
|
||||||
|
@ -90,7 +90,7 @@ API_TESTS = """
|
||||||
[David]
|
[David]
|
||||||
|
|
||||||
# Who is friends with David?
|
# Who is friends with David?
|
||||||
>>> d.friends.all()
|
>>> d.friends.all()
|
||||||
[Chuck]
|
[Chuck]
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ API_TESTS = """
|
||||||
>>> d.stalkers.add(a,c)
|
>>> d.stalkers.add(a,c)
|
||||||
|
|
||||||
# Who are Anne's idols?
|
# Who are Anne's idols?
|
||||||
>>> a.idols.all()
|
>>> a.idols.all()
|
||||||
[Bill, Chuck, David]
|
[Bill, Chuck, David]
|
||||||
|
|
||||||
# Who is stalking Anne?
|
# Who is stalking Anne?
|
||||||
|
@ -140,7 +140,7 @@ API_TESTS = """
|
||||||
>>> b.stalkers.add(a)
|
>>> b.stalkers.add(a)
|
||||||
|
|
||||||
# Who are Anne's idols?
|
# Who are Anne's idols?
|
||||||
>>> a.idols.all()
|
>>> a.idols.all()
|
||||||
[Bill, Chuck, David]
|
[Bill, Chuck, David]
|
||||||
|
|
||||||
# Who is stalking Anne?
|
# Who is stalking Anne?
|
||||||
|
@ -158,7 +158,7 @@ API_TESTS = """
|
||||||
>>> b.stalkers.remove(a)
|
>>> b.stalkers.remove(a)
|
||||||
|
|
||||||
# Who are Anne's idols?
|
# Who are Anne's idols?
|
||||||
>>> a.idols.all()
|
>>> a.idols.all()
|
||||||
[Chuck, David]
|
[Chuck, David]
|
||||||
|
|
||||||
# Who is stalking Anne?
|
# Who is stalking Anne?
|
||||||
|
@ -177,7 +177,7 @@ API_TESTS = """
|
||||||
>>> a.idols.clear()
|
>>> a.idols.clear()
|
||||||
|
|
||||||
# Who are Anne's idols
|
# Who are Anne's idols
|
||||||
>>> a.idols.all()
|
>>> a.idols.all()
|
||||||
[]
|
[]
|
||||||
|
|
||||||
# Reverse relationships should also be gone
|
# Reverse relationships should also be gone
|
||||||
|
@ -186,7 +186,7 @@ API_TESTS = """
|
||||||
[]
|
[]
|
||||||
|
|
||||||
# Who is friends with David?
|
# Who is friends with David?
|
||||||
>>> d.stalkers.all()
|
>>> d.stalkers.all()
|
||||||
[Chuck]
|
[Chuck]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
25. Default manipulators
|
26. Default manipulators
|
||||||
|
|
||||||
Each model gets an AddManipulator and ChangeManipulator by default.
|
Each model gets an AddManipulator and ChangeManipulator by default.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
28. Object pagination
|
29. Object pagination
|
||||||
|
|
||||||
Django provides a framework for paginating a list of objects in a few lines
|
Django provides a framework for paginating a list of objects in a few lines
|
||||||
of code. This is often useful for dividing search results or long lists of
|
of code. This is often useful for dividing search results or long lists of
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
"""
|
"""
|
||||||
29. Validation
|
30. Validation
|
||||||
|
|
||||||
This is an experimental feature!
|
This is an experimental feature!
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue