2016-08-11 7 views
1

Django Rest Framework JSON APIを使用してREST APIを作成しています。私は、関連するリソース(第二度の関係)を含むように非常に単純にしようとしていますが、Djangoはエラーで応答し続ける:Django Rest Framework JSON APIに関連リソースを含めるにはどうすればいいですか?

This endpoint does not support the include parameter for path... 

構造は、このようなものです:

# models: 

class Household(models.Model): 
    ... 

class HouseholdMember(models.Model): 
    household = models.ForeignKey(Household) 
    ... 

class Subscription(models.Model): 
    subscriber = models.ForeignKey(HouseholdMember) 
    ... 

# serializers 

from rest_framework_json_api import serializers 

class SubscriptionSerializer(serializers.ModelSerializer): 
    class Meta: 
    model = Subscription 

私ができるようにしたいと思いますこのようなリクエストをhttp://example.com/api/subscriptions?include=subscriber.householdにすると、世帯ごとにサブスクリプションをグループ化することができます。しかし、私は単にこれを行う方法を見つけることができません。 I know私はResourceRelatedFieldで遊ぶ必要がありますが、これはどういう仕組みか分かりません。どんな助け?

答えて

1

ドナルドレストフレームワークJSON APIのソースのサンプルディレクトリにあるserializers.pyファイルを見ると、明らかに何かが分かりませんでした(ドキュメントには記載されていないため)。私が望むことをするにはincluded_serializersという変数が必要です。私の例では、あなたが必要とするものがここにあります:

# models: 

class Household(models.Model): 
    ... 

class HouseholdMember(models.Model): 
    household = models.ForeignKey(Household) 
    ... 

class Subscription(models.Model): 
    subscriber = models.ForeignKey(HouseholdMember) 
    ... 

# serializers 

from rest_framework_json_api import serializers 

class HouseholdSerializer(serializers.ModelSerializer): 
    class Meta: 
    model = Household 

class HouseholdMemberSerializer(serializers.ModelSerializer): 
    included_serializers = { 
    'household': HouseholdSerializer 
    } 

    class Meta: 
    model = HouseholdMember 

class SubscriptionSerializer(serializers.ModelSerializer): 
    included_serializers = { 
    'subscriber': SubscriberSerializer 
    } 

    class Meta: 
    model = Subscription