~ubuntu-branches/ubuntu/jaunty/python-django/jaunty-updates

« back to all changes in this revision

Viewing changes to tests/regressiontests/get_or_create_regress/models.py

  • Committer: Bazaar Package Importer
  • Author(s): Scott James Remnant
  • Date: 2008-11-15 19:15:33 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20081115191533-xbt1ut2xf4fvwtvc
Tags: 1.0.1-0ubuntu1
* New upstream release:
  - Bug fixes.

* The tests/ sub-directory appaers to have been dropped upstream, so pull
  our patch to workaround the tests and modify the rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from django.db import models
2
 
 
3
 
class Publisher(models.Model):
4
 
    name = models.CharField(max_length=100)
5
 
 
6
 
class Author(models.Model):
7
 
    name = models.CharField(max_length=100)
8
 
 
9
 
class Book(models.Model):
10
 
    name = models.CharField(max_length=100)
11
 
    authors = models.ManyToManyField(Author, related_name='books')
12
 
    publisher = models.ForeignKey(Publisher, related_name='books')
13
 
 
14
 
 
15
 
__test__ = {'one':"""
16
 
#
17
 
# RelatedManager
18
 
#
19
 
 
20
 
# First create a Publisher.
21
 
>>> p = Publisher.objects.create(name='Acme Publishing')
22
 
 
23
 
# Create a book through the publisher.
24
 
>>> book, created = p.books.get_or_create(name='The Book of Ed & Fred')
25
 
>>> created
26
 
True
27
 
 
28
 
# The publisher should have one book.
29
 
>>> p.books.count()
30
 
1
31
 
 
32
 
# Try get_or_create again, this time nothing should be created.
33
 
>>> book, created = p.books.get_or_create(name='The Book of Ed & Fred')
34
 
>>> created
35
 
False
36
 
 
37
 
# And the publisher should still have one book.
38
 
>>> p.books.count()
39
 
1
40
 
 
41
 
#
42
 
# ManyRelatedManager
43
 
#
44
 
 
45
 
# Add an author to the book.
46
 
>>> ed, created = book.authors.get_or_create(name='Ed')
47
 
>>> created
48
 
True
49
 
 
50
 
# Book should have one author.
51
 
>>> book.authors.count()
52
 
1
53
 
 
54
 
# Try get_or_create again, this time nothing should be created.
55
 
>>> ed, created = book.authors.get_or_create(name='Ed')
56
 
>>> created
57
 
False
58
 
 
59
 
# And the book should still have one author.
60
 
>>> book.authors.count()
61
 
1
62
 
 
63
 
# Add a second author to the book.
64
 
>>> fred, created = book.authors.get_or_create(name='Fred')
65
 
>>> created
66
 
True
67
 
 
68
 
# The book should have two authors now.
69
 
>>> book.authors.count()
70
 
2
71
 
 
72
 
# Create an Author not tied to any books.
73
 
>>> Author.objects.create(name='Ted')
74
 
<Author: Author object>
75
 
 
76
 
# There should be three Authors in total. The book object should have two.
77
 
>>> Author.objects.count()
78
 
3
79
 
>>> book.authors.count()
80
 
2
81
 
 
82
 
# Try creating a book through an author.
83
 
>>> ed.books.get_or_create(name="Ed's Recipies", publisher=p)
84
 
(<Book: Book object>, True)
85
 
 
86
 
# Now Ed has two Books, Fred just one.
87
 
>>> ed.books.count()
88
 
2
89
 
>>> fred.books.count()
90
 
1
91
 
"""}