~ubuntu-branches/ubuntu/saucy/python-django/saucy-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): Chris Lamb
  • Date: 2009-07-29 11:26:28 UTC
  • mfrom: (1.2.3 upstream)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: james.westby@ubuntu.com-20090729112628-9qrzwnl9x32jxhbg
Tags: upstream-1.1
ImportĀ upstreamĀ versionĀ 1.1

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
"""}