Tastypie无法使用非id主键发布

时间:2012-01-14 22:44:17

标签: django tastypie

我正在使用django-tastypie来暴露django模型。但是我在发布这个资源时遇到了一些问题。似乎tastypie不喜欢我在'id'字段之外使用另一个字段作为我的主键。

以下是我看到的错误:

"error_message": "Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'pk': u'VMware-42 30 21 91 31 77 1b 8a-75 c1 4f ab 70 d9 99 a6', 'api_name': 'v1', 'resource_name': 'system'}' not found.",

我的模特:

class System(models.Model):
    selinux = models.CharField(max_length=255)
    serialnumber = models.CharField(primary_key=True, max_length=255)
    signer = models.CharField(max_length=255)
    tsm_pvu = models.CharField(max_length=255)

我的资源:

class SystemResource(ModelResource):

    class Meta:
            queryset = System.objects.all()
            authentication = ApiKeyAuthentication()
            authorization = DjangoAuthorization()
            resource_name = 'system'

1 个答案:

答案 0 :(得分:1)

我最近遇到了类似的问题。事实证明,原因不是主键是非ID字段,而是主键包括非字母数字字符(例如空格)。似乎在你的例子中可能就是这种情况。

我发现this patch尚未与主干合并,这为我解决了问题。需要在tastypie 0.9.11中修补的行是文件tastypie / resources.py中(方法base_urls的)方法的第283-284行。希望有所帮助。