0

私は Django の Tastypie パッケージの新しいユーザーであり、API を起動して実行しています。1 つのモデルとそれに関連するモデルのデータを返そうとする 1 つのエンドポイントがあります。エラーは発生していませんが、関連するモデルのデータは常に空です (次の例を参照)。

{
    "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そのプロパティに関連データを入力するために何をする必要があるかについて何か考えはありますか?

4

1 に答える 1

1

この行は重要です:

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

それが言っているのは、モデルでcollections属性を探してから、を使用してそれぞれを表すことです。つまり、モデルに属性があることを確認する必要があります。そのためには、モデルに次の外部キーが必要です。UserCollectionResourceUsercollectionsCollectionrelated_name

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

それがあれば、Tastypie はコレクションを取得して .xml ファイルに表示できるはずUserResourceです。

于 2012-11-10T13:04:05.130 に答える