2016-08-11 2 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

Возможно, мне не хватало чего-то очевидного (потому что это не упоминалось в документации), но если вы посмотрите на файл serializers.py в примерном каталоге источника Django Rest Framework JSON API, это похоже на вас нужно иметь переменную, называемую 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 
Смежные вопросы