2012-07-24 85 views
0

我有一個Tastypie資源(TaskImagesResource)需要重寫obj_get_list函數,以便在向API發出請求時返回正確的數據。我需要訪問另一個資源的屬性(TaskResource,它與TaskImagesResource具有OneToOne關係)才能執行此操作。我可以使用get_related_resource()獲取任務資源的實例,但我不知道如何從對象中獲取數據。這裏是我的代碼現在:Tastypie - 通過ForeignKey字段訪問字段數據

class TaskResource(ModelResource): 
    target = fields.OneToOneField(TargetResource, 'target', full=True) 
    activity = fields.ForeignKey(ActivityResource, 'activity') 
    time = fields.OneToOneField(TaskEventTimeResource, 'time', full=True) 

    class Meta: 
     queryset = Task.objects.all() 
     filtering = { 
      'id' : ALL, 
      'activity' : ALL_WITH_RELATIONS, 
    } 

class TaskImagesResource(Resource): 
    task = fields.ForeignKey(TaskResource, 'task', full=True) 
    camera = fields.CharField() 

    def obj_get_list(self, request, **kwargs): 
     task_resource = self.task.get_related_resource(self) 
     task = Task.objects.get(id=task_resource.id) 
     image_list = task.sorted_imageinstances(self.camera) 

但我得到的錯誤「int()函數的參數必須是字符串或數字,而不是‘CharField’」,因爲task_resource.id是一個CharField對象,而不是數據本身。我怎樣才能訪問實際的現場數據?

回答

0

嘗試:

task = Task.objects.get(id=int(task_resource.id)) 
+0

的CharField不能被強制轉換爲整數。 – Matt 2012-07-26 14:57:45

+0

然後看起來'task_resource = self.task.get_related_resource(self)'有問題。嘗試打印/記錄'task_resource'的輸出以進行調試。 – nknj 2012-07-27 00:02:23