root / taggit / tests / models.py @ 04733cdb
History | View | Annotate | Download (3.1 kB)
1 | 04733cdb | Leonidas Poulopoulos | from django.db import models |
---|---|---|---|
2 | 04733cdb | Leonidas Poulopoulos | |
3 | 04733cdb | Leonidas Poulopoulos | from taggit.managers import TaggableManager |
4 | 04733cdb | Leonidas Poulopoulos | from taggit.models import (TaggedItemBase, GenericTaggedItemBase, TaggedItem, |
5 | 04733cdb | Leonidas Poulopoulos | TagBase, Tag) |
6 | 04733cdb | Leonidas Poulopoulos | |
7 | 04733cdb | Leonidas Poulopoulos | |
8 | 04733cdb | Leonidas Poulopoulos | class Food(models.Model): |
9 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50)
|
10 | 04733cdb | Leonidas Poulopoulos | |
11 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager() |
12 | 04733cdb | Leonidas Poulopoulos | |
13 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
14 | 04733cdb | Leonidas Poulopoulos | return self.name |
15 | 04733cdb | Leonidas Poulopoulos | |
16 | 04733cdb | Leonidas Poulopoulos | class Pet(models.Model): |
17 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50)
|
18 | 04733cdb | Leonidas Poulopoulos | |
19 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager() |
20 | 04733cdb | Leonidas Poulopoulos | |
21 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
22 | 04733cdb | Leonidas Poulopoulos | return self.name |
23 | 04733cdb | Leonidas Poulopoulos | |
24 | 04733cdb | Leonidas Poulopoulos | class HousePet(Pet): |
25 | 04733cdb | Leonidas Poulopoulos | trained = models.BooleanField() |
26 | 04733cdb | Leonidas Poulopoulos | |
27 | 04733cdb | Leonidas Poulopoulos | |
28 | 04733cdb | Leonidas Poulopoulos | # Test direct-tagging with custom through model
|
29 | 04733cdb | Leonidas Poulopoulos | |
30 | 04733cdb | Leonidas Poulopoulos | class TaggedFood(TaggedItemBase): |
31 | 04733cdb | Leonidas Poulopoulos | content_object = models.ForeignKey('DirectFood')
|
32 | 04733cdb | Leonidas Poulopoulos | |
33 | 04733cdb | Leonidas Poulopoulos | class TaggedPet(TaggedItemBase): |
34 | 04733cdb | Leonidas Poulopoulos | content_object = models.ForeignKey('DirectPet')
|
35 | 04733cdb | Leonidas Poulopoulos | |
36 | 04733cdb | Leonidas Poulopoulos | class DirectFood(models.Model): |
37 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50)
|
38 | 04733cdb | Leonidas Poulopoulos | |
39 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through="TaggedFood")
|
40 | 04733cdb | Leonidas Poulopoulos | |
41 | 04733cdb | Leonidas Poulopoulos | class DirectPet(models.Model): |
42 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50)
|
43 | 04733cdb | Leonidas Poulopoulos | |
44 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through=TaggedPet) |
45 | 04733cdb | Leonidas Poulopoulos | |
46 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
47 | 04733cdb | Leonidas Poulopoulos | return self.name |
48 | 04733cdb | Leonidas Poulopoulos | |
49 | 04733cdb | Leonidas Poulopoulos | class DirectHousePet(DirectPet): |
50 | 04733cdb | Leonidas Poulopoulos | trained = models.BooleanField() |
51 | 04733cdb | Leonidas Poulopoulos | |
52 | 04733cdb | Leonidas Poulopoulos | |
53 | 04733cdb | Leonidas Poulopoulos | # Test custom through model to model with custom PK
|
54 | 04733cdb | Leonidas Poulopoulos | |
55 | 04733cdb | Leonidas Poulopoulos | class TaggedCustomPKFood(TaggedItemBase): |
56 | 04733cdb | Leonidas Poulopoulos | content_object = models.ForeignKey('CustomPKFood')
|
57 | 04733cdb | Leonidas Poulopoulos | |
58 | 04733cdb | Leonidas Poulopoulos | class TaggedCustomPKPet(TaggedItemBase): |
59 | 04733cdb | Leonidas Poulopoulos | content_object = models.ForeignKey('CustomPKPet')
|
60 | 04733cdb | Leonidas Poulopoulos | |
61 | 04733cdb | Leonidas Poulopoulos | class CustomPKFood(models.Model): |
62 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50, primary_key=True) |
63 | 04733cdb | Leonidas Poulopoulos | |
64 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through=TaggedCustomPKFood) |
65 | 04733cdb | Leonidas Poulopoulos | |
66 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
67 | 04733cdb | Leonidas Poulopoulos | return self.name |
68 | 04733cdb | Leonidas Poulopoulos | |
69 | 04733cdb | Leonidas Poulopoulos | class CustomPKPet(models.Model): |
70 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50, primary_key=True) |
71 | 04733cdb | Leonidas Poulopoulos | |
72 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through=TaggedCustomPKPet) |
73 | 04733cdb | Leonidas Poulopoulos | |
74 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
75 | 04733cdb | Leonidas Poulopoulos | return self.name |
76 | 04733cdb | Leonidas Poulopoulos | |
77 | 04733cdb | Leonidas Poulopoulos | class CustomPKHousePet(CustomPKPet): |
78 | 04733cdb | Leonidas Poulopoulos | trained = models.BooleanField() |
79 | 04733cdb | Leonidas Poulopoulos | |
80 | 04733cdb | Leonidas Poulopoulos | # Test custom through model to a custom tag model
|
81 | 04733cdb | Leonidas Poulopoulos | |
82 | 04733cdb | Leonidas Poulopoulos | class OfficialTag(TagBase): |
83 | 04733cdb | Leonidas Poulopoulos | official = models.BooleanField() |
84 | 04733cdb | Leonidas Poulopoulos | |
85 | 04733cdb | Leonidas Poulopoulos | class OfficialThroughModel(GenericTaggedItemBase): |
86 | 04733cdb | Leonidas Poulopoulos | tag = models.ForeignKey(OfficialTag, related_name="tagged_items")
|
87 | 04733cdb | Leonidas Poulopoulos | |
88 | 04733cdb | Leonidas Poulopoulos | class OfficialFood(models.Model): |
89 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50)
|
90 | 04733cdb | Leonidas Poulopoulos | |
91 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through=OfficialThroughModel) |
92 | 04733cdb | Leonidas Poulopoulos | |
93 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
94 | 04733cdb | Leonidas Poulopoulos | return self.name |
95 | 04733cdb | Leonidas Poulopoulos | |
96 | 04733cdb | Leonidas Poulopoulos | class OfficialPet(models.Model): |
97 | 04733cdb | Leonidas Poulopoulos | name = models.CharField(max_length=50)
|
98 | 04733cdb | Leonidas Poulopoulos | |
99 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through=OfficialThroughModel) |
100 | 04733cdb | Leonidas Poulopoulos | |
101 | 04733cdb | Leonidas Poulopoulos | def __unicode__(self): |
102 | 04733cdb | Leonidas Poulopoulos | return self.name |
103 | 04733cdb | Leonidas Poulopoulos | |
104 | 04733cdb | Leonidas Poulopoulos | class OfficialHousePet(OfficialPet): |
105 | 04733cdb | Leonidas Poulopoulos | trained = models.BooleanField() |
106 | 04733cdb | Leonidas Poulopoulos | |
107 | 04733cdb | Leonidas Poulopoulos | |
108 | 04733cdb | Leonidas Poulopoulos | class Media(models.Model): |
109 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager() |
110 | 04733cdb | Leonidas Poulopoulos | |
111 | 04733cdb | Leonidas Poulopoulos | class Meta: |
112 | 04733cdb | Leonidas Poulopoulos | abstract = True
|
113 | 04733cdb | Leonidas Poulopoulos | |
114 | 04733cdb | Leonidas Poulopoulos | class Photo(Media): |
115 | 04733cdb | Leonidas Poulopoulos | pass
|
116 | 04733cdb | Leonidas Poulopoulos | |
117 | 04733cdb | Leonidas Poulopoulos | class Movie(Media): |
118 | 04733cdb | Leonidas Poulopoulos | pass
|
119 | 04733cdb | Leonidas Poulopoulos | |
120 | 04733cdb | Leonidas Poulopoulos | |
121 | 04733cdb | Leonidas Poulopoulos | class ArticleTag(Tag): |
122 | 04733cdb | Leonidas Poulopoulos | class Meta: |
123 | 04733cdb | Leonidas Poulopoulos | proxy = True
|
124 | 04733cdb | Leonidas Poulopoulos | |
125 | 04733cdb | Leonidas Poulopoulos | def slugify(self, tag, i=None): |
126 | 04733cdb | Leonidas Poulopoulos | slug = "category-%s" % tag.lower()
|
127 | 04733cdb | Leonidas Poulopoulos | |
128 | 04733cdb | Leonidas Poulopoulos | if i is not None: |
129 | 04733cdb | Leonidas Poulopoulos | slug += "-%d" % i
|
130 | 04733cdb | Leonidas Poulopoulos | return slug
|
131 | 04733cdb | Leonidas Poulopoulos | |
132 | 04733cdb | Leonidas Poulopoulos | class ArticleTaggedItem(TaggedItem): |
133 | 04733cdb | Leonidas Poulopoulos | class Meta: |
134 | 04733cdb | Leonidas Poulopoulos | proxy = True
|
135 | 04733cdb | Leonidas Poulopoulos | |
136 | 04733cdb | Leonidas Poulopoulos | @classmethod
|
137 | 04733cdb | Leonidas Poulopoulos | def tag_model(self): |
138 | 04733cdb | Leonidas Poulopoulos | return ArticleTag
|
139 | 04733cdb | Leonidas Poulopoulos | |
140 | 04733cdb | Leonidas Poulopoulos | class Article(models.Model): |
141 | 04733cdb | Leonidas Poulopoulos | title = models.CharField(max_length=100)
|
142 | 04733cdb | Leonidas Poulopoulos | |
143 | 04733cdb | Leonidas Poulopoulos | tags = TaggableManager(through=ArticleTaggedItem) |