我还是tastypie的新手,但它看起来像一个非常整洁的图书馆。不幸的是,我遇到了一些困难。
我有两个模型,以及与这些模型相关的两个资源:
class Container(models.Model):
pass
class ContainerItem(models.Model):
blog = models.ForeignKey('Container', related_name='items')
# For testing purposes only
class ContainerResource(ModelResource):
class Meta:
queryset = Container.objects.all()
authorization = Authorization()
class ContainerItemResource(ModelResource):
class Meta:
queryset = ContainerItem.objects.all()
authorization = Authorization()
我通过jQuery创建了一个Container
对象:
var data = JSON.stringify({});
$.ajax({
url: 'http://localhost:8000/api/v1/container/',
type: 'POST',
contentType: 'application/json',
data: data,
dataType: 'json',
processData: false
});
但是,当我去创建ContainerItem
时,我收到此错误:
container_id may not be NULL
所以我的问题是:如果存在ForeignKey关系,如何创建新资源?
答案 0 :(得分:20)
在ModelResource上不会自动表示ForeignKey关系。你必须指定:
blog = tastypie.fields.ForeignKey(ContainerResource, 'blog')
<{1>}上的,然后您可以在发布容器项目时发布容器的资源uri。
ContainerItemResource
有关详细信息,请查看以下链接:
在本节中,有一个如何创建基本资源的示例。在底部,他们提到关系字段不是通过内省自动创建的:
http://django-tastypie.readthedocs.org/en/latest/tutorial.html#creating-resources
这里他们添加了创建关系字段的示例:
http://django-tastypie.readthedocs.org/en/latest/tutorial.html#creating-more-resources
以下是关于添加反向关系的简介:
http://django-tastypie.readthedocs.org/en/latest/resources.html#reverse-relationships
如果你像小说一样阅读它们,所有the docs都是好的,但在它们之间很难找到具体的东西。