为django rest框架中的模型创建通用视图集和序列化器



我正在为接受所有字段的模型制作许多视图和序列化器。它们都是这样的:

class MyModelViewSet(viewset.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer

class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'

我想做一个通用的视图集和序列化器,可以简单地把我的模型。我发现这篇文章是有帮助的,但我宁愿没有模型在url。如果可能的话,我会用router.register:

发送模型。
router.register('my_url', MyView(MyModel), basename='my-basename')

但是这给了我一个错误:

AttributeError: This method is available only on the class, not on instances.

你知道怎么解决这个问题吗?

我在寻找同样的问题时遇到的。注意,在GeneralViewSet中,你必须从self.model中获得模型。所以循环所有模型的正确代码是:

classes={}
for model in django.apps.apps.get_models():
name = model.__name__
classes[name]=type(name, (views.GeneralViewSet,), {})
classes[name].model=model
router.register(name ,classes[name], basename=name)  

相关内容

  • 没有找到相关文章

最新更新