blob: bc6764d8b2d3a16faa9963a7a3c89e7f6dc2f2e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
from django.db import models
from django.contrib import admin
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
class Episode(models.Model):
name = models.CharField(max_length=100)
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(verify_exists=False)
def __unicode__(self):
return self.url
class MediaInline(generic.GenericTabularInline):
model = Media
class EpisodeAdmin(admin.ModelAdmin):
inlines = [
MediaInline,
]
admin.site.register(Episode, EpisodeAdmin)
#
# 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
class MediaExtraInline(generic.GenericTabularInline):
model = Media
extra = 0
admin.site.register(EpisodeExtra, inlines=[MediaExtraInline])
#
# Generic inline with extra and max_num
#
class EpisodeMaxNum(Episode):
pass
class MediaMaxNumInline(generic.GenericTabularInline):
model = Media
extra = 5
max_num = 2
admin.site.register(EpisodeMaxNum, inlines=[MediaMaxNumInline])
#
# Generic inline with exclude
#
class EpisodeExclude(Episode):
pass
class MediaExcludeInline(generic.GenericTabularInline):
model = Media
exclude = ['url']
admin.site.register(EpisodeExclude, inlines=[MediaExcludeInline])
|