2016-02-05 25 views
0

我是Django REST Framework的新手,并且因为看起来很简单的事情而沮丧了一段时间。我有一个串行器,我试图切换到HyperLinkedModelSerializer。我通过DRF快速入门指南去了,我想我的串行和视图集中是非常相似的例子还有:DRF:在串行器中添加'url'字段导致在浏览API时出现'无法解析URL'错误

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场被冷落,挑选端点出现在可浏览的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. 

我的理解是,使用视图集将自动处理的详细视图,而且我认为该模型是正确包括在内。这留下了lookup_field,但我不确定这里有什么问题。我希望问题检索任何结果。

我尝试将lookupfield = 'id'添加到PickViewset,但没有帮助。我也试着用GameSerializer做同样的事情 - 创建一个Viewset并添加到路由器中,但是我遇到了同样的错误。

回答

0

我知道这一定很简单,事实证明这是真的。我正在使用PickViewSet的base_name,这是不必要的。我仍然不确定为什么这不起作用(我尝试将base_name更改为'pick'以匹配模型名称,但这也不起作用),但是我将继续阅读ViewSets自动生成详细的意见。

只需删除base_name即可开始工作。

相关问题