@@ -65,14 +65,14 @@ def __str__(self):
65
65
66
66
# Objects with declared GenericRelations can be tagged directly -- the API
67
67
# mimics the many-to-many API.
68
- >>> lion.tags.create(tag="yellow")
69
- <TaggedItem: yellow>
70
- >>> lion.tags.create(tag="hairy")
71
- <TaggedItem: hairy>
72
68
>>> bacon.tags.create(tag="fatty")
73
69
<TaggedItem: fatty>
74
70
>>> bacon.tags.create(tag="salty")
75
71
<TaggedItem: salty>
72
+ >>> lion.tags.create(tag="yellow")
73
+ <TaggedItem: yellow>
74
+ >>> lion.tags.create(tag="hairy")
75
+ <TaggedItem: hairy>
76
76
77
77
>>> lion.tags.all()
78
78
[<TaggedItem: hairy>, <TaggedItem: yellow>]
@@ -105,4 +105,31 @@ def __str__(self):
105
105
[<TaggedItem: shiny>]
106
106
>>> TaggedItem.objects.filter(content_type__pk=ctype.id, object_id=quartz.id)
107
107
[<TaggedItem: clearish>]
108
+
109
+
110
+ # If you delete an object with an explicit Generic relation, the related
111
+ # objects are deleted when the source object is deleted.
112
+ # Original list of tags:
113
+ >>> [(t.tag, t.content_type, t.object_id) for t in TaggedItem.objects.all()]
114
+ [('clearish', <ContentType: mineral>, 1), ('fatty', <ContentType: vegetable>, 2), ('hairy', <ContentType: animal>, 1), ('salty', <ContentType: vegetable>, 2), ('shiny', <ContentType: animal>, 2), ('yellow', <ContentType: animal>, 1)]
115
+
116
+ >>> lion.delete()
117
+ >>> [(t.tag, t.content_type, t.object_id) for t in TaggedItem.objects.all()]
118
+ [('clearish', <ContentType: mineral>, 1), ('fatty', <ContentType: vegetable>, 2), ('salty', <ContentType: vegetable>, 2), ('shiny', <ContentType: animal>, 2)]
119
+
120
+ # If Generic Relation is not explicitly defined, any related objects
121
+ # remain after deletion of the source object.
122
+ >>> quartz.delete()
123
+ >>> [(t.tag, t.content_type, t.object_id) for t in TaggedItem.objects.all()]
124
+ [('clearish', <ContentType: mineral>, 1), ('fatty', <ContentType: vegetable>, 2), ('salty', <ContentType: vegetable>, 2), ('shiny', <ContentType: animal>, 2)]
125
+
126
+ # If you delete a tag, the objects using the tag are unaffected
127
+ # (other than losing a tag)
128
+ >>> tag = TaggedItem.objects.get(id=1)
129
+ >>> tag.delete()
130
+ >>> bacon.tags.all()
131
+ [<TaggedItem: salty>]
132
+ >>> [(t.tag, t.content_type, t.object_id) for t in TaggedItem.objects.all()]
133
+ [('clearish', <ContentType: mineral>, 1), ('salty', <ContentType: vegetable>, 2), ('shiny', <ContentType: animal>, 2)]
134
+
108
135
"""
0 commit comments