Django Tastypie выдает сообщение «превышена максимальная глубина рекурсии», когда full=True для обратной связи.

Я получаю превышение максимальной глубины рекурсии, если запускаю код ниже:

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, оно работает. Я понимаю, почему это происходит, но мне нужны оба отношения для передачи данных, а не только «ресурс _uri». Есть ли способ Tastypie сделать это? Мне удалось решить проблему, создав метод сериализации в моей модели проекта, но это далеко не элегантно. Спасибо.

7
задан sigmus 19 July 2012 в 22:47
поделиться