姜戈 | Tastypie:用 ForeignKey__id 创建记录

Django | Tastypie: Create record with ForeignKey__id

class D(BaseRsrc):
    a1 = fields.ForeignKey(D1Resource, 'a1', full=True, blank=True)
    a2 = fields.ForeignKey(D2Resource, 'a2', full=True, blank=True)
    a3 = fields.ForeignKey(D3Resource, 'a3', full=True, blank=True)
    class Meta(BaseRsrc.Meta):
        resource_name = 'sample_endpoint'
        queryset = M.objects.all()
        include_resource_uri = True

我发送的POST请求是:

{"data":
    {"a1_id":110,"a2_id":10802,"a3_id":"10804"}
}

我收到错误

{
 "D": 
    { 
      "a1": ["This field cannot be null."], 
      "a2": ["This field cannot be null."], 
      "a3": ["This field cannot be null."]}
}

是否有正确的 tastypie 方法?数据库只需要外键 ID。这就是我要发送的内容。我需要覆盖每个水合物吗?这听起来效率低下。

不要让数据库误导您。 Tastypie 直接基于 Django 的 ORM。

因此,请将您的外键视为一个对象,而不仅仅是 id 列。 您应该改用资源表示路径:

{"a1": "/path/to/a1resource/110", "a2": "/path/to/a2resource/10802", "a3": "/path/to/a3resource/10804"}

您只需在 tastypie 的外键中使用资源 uri 表示。