Kaydet (Commit) 02fcfe62 authored tarafından Adrian Holovaty's avatar Adrian Holovaty

Cleaned up numbering with model unit tests

git-svn-id: http://code.djangoproject.com/svn/django/trunk@3031 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst a8461551
""" """
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 ...@@ -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 = """ ...@@ -43,6 +48,4 @@ API_TESTS = """
>>> d = now - a.pub_date >>> d = now - a.pub_date
>>> d.seconds < 5 >>> d.seconds < 5
True True
""" """
""" """
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): ...@@ -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',)
......
""" """
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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -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 = """ ...@@ -186,7 +186,7 @@ API_TESTS = """
[] []
# Who is friends with David? # Who is friends with David?
>>> d.stalkers.all() >>> d.stalkers.all()
[Chuck] [Chuck]
""" """
""" """
25. Default manipulators 26. Default manipulators
Each model gets an AddManipulator and ChangeManipulator by default. Each model gets an AddManipulator and ChangeManipulator by default.
""" """
......
""" """
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
......
""" """
29. Validation 30. Validation
This is an experimental feature! This is an experimental feature!
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment