如果运行以下代码,我会超出最大递归深度:
from tastypie import fields, utils
from tastypie.resources import ModelResource
from core.models import Project, Client
class ClientResource(ModelResource):
projects = fields.ToManyField(
'api.resources.ProjectResource', 'project_set', full=True
)
class Meta:
queryset = Client.objects.all()
resource_name = 'client'
class ProjectResource(ModelResource):
client = fields.ForeignKey(ClientResource, 'client', full=True)
class Meta:
queryset = Project.objects.all()
resource_name = 'project'
# curl http://localhost:8000/api/client/?format=json
# or
# curl http://localhost:8000/api/project/?format=json
如果在其中一个关系上设置 full=False ,则它有效。我确实理解为什么会发生这种情况,但我需要两个关系来带来数据,而不仅仅是“resource_uri”。有 Tastypie 的方法吗?我设法解决了在项目模型上创建序列化方法的问题,但它远非优雅。谢谢。
你必须重写full_dehydrate
一种针对至少一个资源的方法,以跳过导致递归的相关资源的脱水。
或者,您可以定义两种使用相同模型的资源,其中一种是full=True
另一个与full=False
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)