2012-09-21 2 views
0

두 가지 작업, 작업 및 작업 모델이 있습니다. 작업에는 예상대로 작동하는 작업이라는 ToOneField가 있습니다. Task는 Toast를 ToManyField로 사용하여 API에 노출하려는 경우를 제외하고는 잘 작동하는 정렬 된 작업 목록을 반환하는 actions라는 속성이 있습니다.OneToMany 속성 Tastypie 포함

class TaskResource(ModelResource): 
    actions = fields.ToManyField('ActionResource', 'actions') 

    class Meta: 
     queryset = Task.objects.all() 
     resource_name = 'task' 

class ActionResource(ModelResource): 
    task = fields.ToOneField(TaskResource, 'task') 

    class Meta: 
     queryset = Action.objects.all() 
     resource_name = 'action' 

이 출력 : 여기에 내 현재의 시도는

"error_message": "'list' object has no attribute 'all'" 

사람이 주요 재 설계를 포함하지 않는 어떤 아이디어가 있습니까? 당신이 재산을 반환 할 경우

+0

모델이 정확히 어떻게 보이나요? – yakxxx

답변

2

당신이 그런 예를 들어 사용자의 작업 자원의 필드를 정의 할 수 있습니다

actions = CharField('actions', readonly=True) 

위의 코드는 사용자의 작업 모델의 PROPERT 액세스 할 수 있습니다. tastypie가 기본적으로 수행하는 것과 다른 방식으로 반환 된 값을 처리하려는 경우 dehydrate_actions 메서드를 정의 할 수 있습니다.

하지만 실제로 작업 모델의 속성에 액세스하지 않으려는 리소스를 정의한 방식으로 수행하려는 경우 작업에 대한 역방향 관계의 관리자에 액세스하려는 것이고 django에서 기본값이됩니다. action_set을 호출하여 액세스 할 수 있습니다. 그래서 작업 자원의 :

실제로 코드에서 수행 한 어떤
actions = fields.ToManyField('ActionResource', 'action_set') 

More about this in the docs.

하는 역의 관계에 액세스하려고하지만, 대신에이 tastypie 이해되지 않는 속성에 액세스했다.

+0

고마워, 그 두 번째 방법은 완벽하게 작동했습니다. –