admin.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from django import forms
  2. from django.contrib import admin
  3. from .models import Article, ArticleProxy, Site
  4. class ArticleAdminForm(forms.ModelForm):
  5. nolabel_form_field = forms.BooleanField(required=False)
  6. class Meta:
  7. model = Article
  8. fields = ["title"]
  9. @property
  10. def changed_data(self):
  11. data = super().changed_data
  12. if data:
  13. # Add arbitrary name to changed_data to test
  14. # change message construction.
  15. return data + ["not_a_form_field"]
  16. return data
  17. class ArticleInline(admin.TabularInline):
  18. model = Article
  19. fields = ["title"]
  20. form = ArticleAdminForm
  21. class SiteAdmin(admin.ModelAdmin):
  22. inlines = [ArticleInline]
  23. site = admin.AdminSite(name="admin")
  24. site.register(Article)
  25. site.register(ArticleProxy)
  26. site.register(Site, SiteAdmin)
  27. class CustomAdminSite(admin.AdminSite):
  28. def get_log_entries(self, request):
  29. from django.contrib.contenttypes.models import ContentType
  30. log_entries = super().get_log_entries(request)
  31. return log_entries.filter(
  32. content_type__in=ContentType.objects.get_for_models(
  33. *self._registry.keys()
  34. ).values()
  35. )
  36. custom_site = CustomAdminSite(name="custom_admin")
  37. custom_site.register(Article)