diff --git a/djadmin2/models.py b/djadmin2/models.py index a0b40a5..f7e50bd 100644 --- a/djadmin2/models.py +++ b/djadmin2/models.py @@ -108,6 +108,9 @@ class ModelAdmin2(BaseAdmin2): detail_view = views.ModelDetailView delete_view = views.ModelDeleteView + # API configuration + api_serializer_class = None + # API Views api_list_view = apiviews.ListCreateAPIView api_detail_view = apiviews.RetrieveUpdateDestroyAPIView @@ -131,6 +134,13 @@ class ModelAdmin2(BaseAdmin2): 'modeladmin': self, } + def get_default_api_view_kwargs(self): + kwargs = self.get_default_view_kwargs() + kwargs.update({ + 'serializer_class': self.api_serializer_class, + }) + return kwargs + def get_prefixed_view_name(self, view_name): return '{}_{}_{}'.format(self.app_label, self.model_name, view_name) @@ -157,24 +167,18 @@ class ModelAdmin2(BaseAdmin2): def get_delete_kwargs(self): return self.get_default_view_kwargs() - def get_api_index_kwargs(self): - return self.get_default_view_kwargs() - - def get_api_detail_kwargs(self): - return self.get_default_view_kwargs() - def get_index_url(self): return reverse('admin2:{}'.format(self.get_prefixed_view_name('index'))) def get_api_list_kwargs(self): - kwargs = self.get_default_view_kwargs() + kwargs = self.get_default_api_view_kwargs() kwargs.update({ 'paginate_by': self.list_per_page, }) return kwargs def get_api_detail_kwargs(self): - return self.get_default_view_kwargs() + return self.get_default_api_view_kwargs() def get_urls(self): return patterns('', diff --git a/example/blog/admin2.py b/example/blog/admin2.py index 8367587..403e11f 100644 --- a/example/blog/admin2.py +++ b/example/blog/admin2.py @@ -2,21 +2,43 @@ # Import your custom models from .models import Post, Comment from django.contrib.auth.forms import UserCreationForm, UserChangeForm -from django.contrib.auth.models import Group, Permission, User +from django.contrib.auth.models import Group, User +from rest_framework.relations import PrimaryKeyRelatedField import djadmin2 from djadmin2.models import ModelAdmin2 +from djadmin2.apiviews import Admin2APISerializer + + +class GroupSerializer(Admin2APISerializer): + permissions = PrimaryKeyRelatedField(many=True) + + class Meta: + model = Group + + +class GroupAdmin2(ModelAdmin2): + api_serializer_class = GroupSerializer + + +class UserSerializer(Admin2APISerializer): + user_permissions = PrimaryKeyRelatedField(many=True) + + class Meta: + model = User + exclude = ('passwords',) class UserAdmin2(ModelAdmin2): create_form_class = UserCreationForm update_form_class = UserChangeForm + api_serializer_class = UserSerializer + # Register each model with the admin djadmin2.default.register(Post) djadmin2.default.register(Comment) djadmin2.default.register(User, UserAdmin2) -djadmin2.default.register(Permission) -djadmin2.default.register(Group) +djadmin2.default.register(Group, GroupAdmin2)