【发布时间】:2018-03-01 11:19:51
【问题描述】:
我正在努力简化如何在我的 Djangp 应用程序的 API 中包含不同的模型。以前我把它设置在每个模型都有一个单独定义的 Viewset 和一个 Serializer 的位置。相反,我正在研究一种更通用的方法,我只需传入一个模型和相关字段的列表,并将自动添加到 API 中。我目前遇到的问题是定义 serializer_class:
from myapp import MyModel
from rest_framework.serializers import HyperlinkedModelSerializer
from rest_framework.viewsets import ModelViewSet
app_name = 'myapp'
fields = ('field1', 'field2', 'field3')
queryset = MyModel.objects.all()
# Problem is here
serializer_class = HyperlinkedModelSerializer(model=MyModel, fields=fields)
viewset = ModelViewSet(queryset=queryset, serializer_class=serializer_class)
# Then to register it all with the router:
self.register(app_name + '/' + model.__name__, viewset)
我得到错误:
TypeError: __init__() got an unexpected keyword argument 'fields'
问题似乎在于,在 HyperlinkedModelSerializer 中,“模型”和“字段”通常被定义为 Meta 选项,因此以这种方式提供它们时似乎不接受它们。
有没有办法做到这一点?
谢谢。
【问题讨论】:
标签: django django-rest-framework