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

Django models 如何在Django REST框架中使用超链接来表示关系而不是主键,django-models,django-rest-framework,jsonserializer,Django Models,Django Rest Framework,Jsonserializer,我想将我的对象索引作为“资源uri”而不是id 我采用通常的方法创建模型、视图和序列化程序: class User(BaseModel): user = models.ForeignKey(settings.AUTH_USER_MODEL) models.CharField() class UserSerailizers(serializers.ModelSerializer): class Meta: model = User fiel

我想将我的对象索引作为“资源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
当我调用时,我得到了这个响应

{
  id:1,
  name:'toto'
 }
但我想对这张表格有一个答案:

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

有什么想法吗?

如果您想在模型表示中使用超链接而不是主键,则必须使用
超链接模型序列化程序
或更通用的
序列化程序
以及
超链接实体字段
和/或
超链接实体字段
。前者可能就是你要找的

HyperlinkedModelSerializer
类与
ModelSerializer
类类似,只是它使用超链接来表示关系,而不是主键

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

  • 如前所述,您需要使用HyperlinkedModelSerializer,如图所示

  • lookup_field属性应该在Meta类中

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