如何在Django REST框架中使用超链接来表示关系而不是主键

时间:2014-10-17 00:52:47

标签: django-models django-rest-framework jsonserializer

我希望将对象索引作为" resource_uri"而是id 我采用通常的方式制作模型,视图,序列化器:

class User(BaseModel):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    models.CharField()

class UserSerailizers(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id','user','formatted_address')
classclass UserList(generics.ListCreateAPIView):
    queryset = Image.objects.all()
    serializer_class = UserSerializer

当我打电话给< my_domain / user />我收到了这个回复

{
  id:1,
  name:'toto'
 }

但我希望得到这个表格的答案:

{ 
'url': my_domain/user/1/
 'name': 'toto'
 }

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果您想在模型表示中使用超链接而不是主键,则必须使用HyperlinkedModelSerializer或更多通用Serializer以及HyperlinkedIdentityField和/或{{1} }。前者可能就是你要找的东西。

  

HyperlinkedRelatedField类类似于HyperlinkedModelSerializer类,除了它使用超链接来表示关系,而不是主键。

有关更多详细信息,请参阅Django REST框架documentation

答案 1 :(得分:0)

  1. 如前所述,您需要使用已显示的HyperlinkedModelSerializer。

  2. lookup_field属性应该在Meta类中。

  3. 最新的猜测是:你的用户模型只有一个ListView。为了显示用户的详细信息,还需要检索方法。我建议您使用ModelViewset,以便自动实现所有方法。