我是Django REST Framework的新手,一段时间以来似乎非常简单。我有一个Serializer,我正在尝试切换到HyperLinkedModelSerializer。我浏览了DRF快速入门指南,我认为我的Serializer和Viewset与那里的例子非常相似:
class PickViewset(viewsets.ModelViewSet):
queryset = Pick.objects.all()
serializer_class = PickSerializer
class PickSerializer(serializers.HyperlinkedModelSerializer):
sheet = SheetSerializer()
game = GameSerializer()
class Meta:
model = Pick
fields = ('url', 'sheet', 'amount', 'spread', 'pick_type', 'pick_team', 'game')
添加路由器:
router.register(r'pick', PickViewset, base_name='picks')
当省略url
字段时,pick端点显示在可浏览的API上,我可以查看对象。但是,只要我添加url
,就会收到此错误:
ImproperlyConfigured at /api/pick/
Could not resolve URL for hyperlinked relationship using view name "pick-detail".
You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
我的理解是使用ViewSet会自动处理详细信息视图,我认为模型已正确包含在内。这留下了lookup_field,但我不确定这里有什么问题。我希望问题能够检索到任何结果。
我尝试将lookupfield = 'id'
添加到PickViewset,但这没有帮助。我也尝试用GameSerializer做同样的事情 - 创建一个Viewset并添加到路由器,但是我遇到了同样的错误。
答案 0 :(得分:0)
我知道这必须简单,事实证明这是真的。我正在为PickViewSet使用base_name,这是不必要的。我还不确定为什么这样做不起作用(我尝试将base_name更改为'选择'以匹配模型名称,但这也不起作用),但我和#39;我将继续阅读ViewSets如何自动生成详细信息视图。
只需删除base_name即可开始工作。