Skip to content

Instantly share code, notes, and snippets.

@acgray
Created September 20, 2011 10:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save acgray/1228833 to your computer and use it in GitHub Desktop.
Save acgray/1228833 to your computer and use it in GitHub Desktop.
Admin form inheritance
from django import forms
from django.contrib import admin
from fieldlevel.admin import FieldLevelAdmin
from mptt.admin import MPTTModelAdmin
from content.models import Article, Section, Review
class ArticleForm(forms.ModelForm):
model = Article
class Media:
js = (
'/static/js/jquery-latest.js',
'/static/js/article-admin.js',
)
class ArticleAdmin(FieldLevelAdmin):
fieldsets = [
(None, {'fields': ['title','slug','summary','bullets','body']}),
('Multimedia', {'fields': ['main_image','main_image_credit']}),
('Publishing settings', {'fields': ['pub_date','pub_status','sites']}),
('Taxonomy', {'fields': ['tags','section']}),
('Author information', {'fields': ['authors','authors_extra']})
]
list_filter = ['pub_date']
# form = ArticleForm
def publish(self, request, queryset):
rows_updated = queryset.update(pub_status='P')
if rows_updated == 1:
message_bit = "1 story was"
else:
message_bit = "%s stories were" % rows_updated
self.message_user(request, "%s successfully published." % message_bit)
publish.short_description = "Publish selected stories"
def can_change_field(self, request, obj, field_name):
if field_name == "pub_status":
if not request.user.is_superuser:
return False
return True
class Meta:
abstract = True
class ReviewAdmin(ArticleAdmin):
#form = ReviewForm
fieldsets = ArticleAdmin.fieldsets.insert(1,
('Review fields', {'fields': ['rating']}),
)
admin.site.register(Article,ArticleAdmin)
admin.site.register(Review,ReviewAdmin)
admin.site.register(Section, MPTTModelAdmin)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment