在模型上使用带有非id主键的HyperlinkedIdentityField?

时间:2015-06-05 22:39:50

标签: django django-rest-framework

我有一个代表服务器的相对简单的Django 1.7model:

class Server(models.Model):
    hostname = models.CharField(max_length=100, primary_key=True)
    puppetInfo = models.TextField(blank=True, null=True)

我打算通过Django REST框架公开这些信息,并创建了以下序列化器和视图集:

class ServerSerializer(serializers.ModelSerializer):

    id = serializers.HyperlinkedIdentityField(view_name="server-detail", read_only=True)
    instances = serializers.HyperlinkedRelatedField(view_name='instance-detail', many=True, read_only=True)

    class Meta:
        model = models.Server

class ServerViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = models.Server.objects.all()
    serializer_class = ServerSerializer
    lookup_field = "server_hostname"

我已经尝试了许多排列以使其正常工作,但无论我尝试什么,当我访问服务时总是会出现以下错误:

在/ api / servers /

处配置不当

无法使用视图名称“server-detail”解析超链接关系的URL。您可能未能在API中包含相关模型,或者在此字段上错误地配置了lookup_field属性。

我也在使用简单的路由器来配置URL:

router = routers.SimpleRouter()
....
router.register(r'servers', server.ServerViewSet)

非常感谢任何帮助。

0 个答案:

没有答案