2012-11-10 29 views
0

我是Django的Tastypie包的新用戶,並且已啓動並運行我的API。我有一個端點試圖返回一個模型及其相關模型的數據。儘管我沒有得到任何錯誤,相關模型的數據始終是空的(見下面的例子):嘗試從Tastypie中的一個端點返回相關模型的數據,但相關數據始終爲空

{ 
    "collection": [], 
    "first_name": "Bob", 
    "last_login": "2012-11-10T20:00:25", 
    "last_name": "Schliffman", 
    "resource_uri": "/api/v1/user/2/", 
    "username": "flip" 
} 

有模型(在管理控制檯驗證)相應的數據,但它只是不來向上。以下是api.py相關資源定義:

class UserResource(ModelResource): 
    collection = fields.ToManyField('maps.api.resources.CollectionResource', \ 
     attribute='collections', full=True, null=True) 

    class Meta: 
     queryset = User.objects.all() 
     resource_name = 'user' 
     fields = ['username', 'first_name', 'last_name', 'last_login'] 
     allowed_methods = ['get'] 


class CollectionResource(ModelResource): 
    user = fields.ToOneField(UserResource, 'user') 

    class Meta: 
     queryset = Collection.objects.all() 
     resource_name = 'collection' 
     allowed_methods = ['get', 'post'] 

什麼,我需要爲了做吃出collection財產填入相關數據的任何想法?

回答

1

此行是關鍵:

collection = fields.ToManyField('maps.api.resources.CollectionResource', \ 
       attribute='collections', full=True, null=True) 

它是什麼,說是找collections屬性在User模型,然後代表各自使用CollectionResource那些。換句話說,您應該確保您的User型號具有collections屬性。對於這一點,你Collection模型必須有related_name外鍵:

from django.contrib.auth.models import User 
def Collection(models.Model): 
    ... 
    user = models.ForeignKey(User, related_name='collections') 

如果有,應該Tastypie能夠得到集合並在UserResource顯示它們。

+0

謝謝,@ miki725。進行此更改後,我得到了tastypie的'SessionAuthentication'的導入錯誤。不知道發生了什麼,現在就看着它。 – mariachimike

+0

這個錯誤可能是因爲Django無法動態地導入''User''。像以前一樣離開那個部分,只是確保你有'related_name'部分。 – miki725

+0

順便說一句,我不知道如何解釋你的關於「Django不能動態導入'用戶'」的聲明 - 「我使用'django-registration'軟件包,所以我只是導入'django.contrib。 auth.models.User'在我的api.py文件中。 – mariachimike

相關問題