mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #11639, #13618 -- Added get_prepopulated_fields method to ModelAdmin and InlineModelAdmin to be able to handle prepopulated fields on a case-by-case basis. Thanks, leanmeandonothingmachine.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16069 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -529,6 +529,51 @@ class LinkInline(admin.TabularInline):
|
||||
readonly_fields = ("posted",)
|
||||
|
||||
|
||||
class PrePopulatedPost(models.Model):
|
||||
title = models.CharField(max_length=100)
|
||||
published = models.BooleanField()
|
||||
slug = models.SlugField()
|
||||
|
||||
class PrePopulatedSubPost(models.Model):
|
||||
post = models.ForeignKey(PrePopulatedPost)
|
||||
subtitle = models.CharField(max_length=100)
|
||||
subslug = models.SlugField()
|
||||
|
||||
class SubPostInline(admin.TabularInline):
|
||||
model = PrePopulatedSubPost
|
||||
|
||||
prepopulated_fields = {
|
||||
'subslug' : ('subtitle',)
|
||||
}
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
if obj and obj.published:
|
||||
return ('subslug',)
|
||||
return self.readonly_fields
|
||||
|
||||
def get_prepopulated_fields(self, request, obj=None):
|
||||
if obj and obj.published:
|
||||
return {}
|
||||
return self.prepopulated_fields
|
||||
|
||||
class PrePopulatedPostAdmin(admin.ModelAdmin):
|
||||
list_display = ['title', 'slug']
|
||||
prepopulated_fields = {
|
||||
'slug' : ('title',)
|
||||
}
|
||||
|
||||
inlines = [SubPostInline]
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
if obj and obj.published:
|
||||
return ('slug',)
|
||||
return self.readonly_fields
|
||||
|
||||
def get_prepopulated_fields(self, request, obj=None):
|
||||
if obj and obj.published:
|
||||
return {}
|
||||
return self.prepopulated_fields
|
||||
|
||||
class Post(models.Model):
|
||||
title = models.CharField(max_length=100, help_text="Some help text for the title (with unicode ŠĐĆŽćžšđ)")
|
||||
content = models.TextField(help_text="Some help text for the content (with unicode ŠĐĆŽćžšđ)")
|
||||
@@ -818,3 +863,4 @@ admin.site.register(Topping)
|
||||
admin.site.register(Album, AlbumAdmin)
|
||||
admin.site.register(Question)
|
||||
admin.site.register(Answer)
|
||||
admin.site.register(PrePopulatedPost, PrePopulatedPostAdmin)
|
||||
|
||||
Reference in New Issue
Block a user