summaryrefslogtreecommitdiff
path: root/tests/generic_inline_admin/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/generic_inline_admin/models.py')
-rw-r--r--tests/generic_inline_admin/models.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/generic_inline_admin/models.py b/tests/generic_inline_admin/models.py
new file mode 100644
index 0000000000..dedc351075
--- /dev/null
+++ b/tests/generic_inline_admin/models.py
@@ -0,0 +1,76 @@
+from django.contrib.contenttypes import generic
+from django.contrib.contenttypes.models import ContentType
+from django.db import models
+from django.utils.encoding import python_2_unicode_compatible
+
+
+class Episode(models.Model):
+ name = models.CharField(max_length=100)
+ length = models.CharField(max_length=100, blank=True)
+ author = models.CharField(max_length=100, blank=True)
+
+
+@python_2_unicode_compatible
+class Media(models.Model):
+ """
+ Media that can associated to any object.
+ """
+ content_type = models.ForeignKey(ContentType)
+ object_id = models.PositiveIntegerField()
+ content_object = generic.GenericForeignKey()
+ url = models.URLField()
+ description = models.CharField(max_length=100, blank=True)
+ keywords = models.CharField(max_length=100, blank=True)
+
+ def __str__(self):
+ return self.url
+
+#
+# These models let us test the different GenericInline settings at
+# different urls in the admin site.
+#
+
+#
+# Generic inline with extra = 0
+#
+
+class EpisodeExtra(Episode):
+ pass
+
+
+#
+# Generic inline with extra and max_num
+#
+class EpisodeMaxNum(Episode):
+ pass
+
+
+#
+# Generic inline with unique_together
+#
+class Category(models.Model):
+ name = models.CharField(max_length=50)
+
+
+class PhoneNumber(models.Model):
+ content_type = models.ForeignKey(ContentType)
+ object_id = models.PositiveIntegerField()
+ content_object = generic.GenericForeignKey('content_type', 'object_id')
+ phone_number = models.CharField(max_length=30)
+ category = models.ForeignKey(Category, null=True, blank=True)
+
+ class Meta:
+ unique_together = (('content_type', 'object_id', 'phone_number',),)
+
+
+class Contact(models.Model):
+ name = models.CharField(max_length=50)
+ phone_numbers = generic.GenericRelation(PhoneNumber)
+
+#
+# Generic inline with can_delete=False
+#
+class EpisodePermanent(Episode):
+ pass
+
+