姜戈 | 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 表示。
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 表示。