我正在为接受所有字段的模型制作许多视图和序列化器。它们都是这样的:
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)