2016-08-11 1 views
1

Ich verwende Django Rest Framework JSON API, um eine REST-API zu erstellen. Ich versuche, ganz einfach eine verwandte Ressource (2. Grad Beziehung) einschließen, aber Django hält mit dem Fehler reagiert:Wie kann man verwandte Ressourcen in die JSON-API von Django Rest Framework einbeziehen?

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

Die Struktur ist so etwas wie diese:

# 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 

Ich mag wäre in der Lage sein, um eine Anfrage wie folgt zu stellen: http://example.com/api/subscriptions?include=subscriber.household um Abonnements nach Haushalt gruppieren zu können. Ich kann jedoch einfach nicht herausfinden, wie das geht. I know Ich muss mit ResourceRelatedField spielen, aber ich vermisse etwas oder zu viel von einem Neuling, um zu verstehen, wie das funktioniert. Irgendeine Hilfe?

Antwort

1

Nun, vielleicht habe ich etwas offensichtlich fehlt (weil dies nicht in der Dokumentation erwähnt wurde), aber wenn Sie sich die serializers.py Datei im Beispielverzeichnis der Quelle von Django Rest Framework JSON API ansehen, sieht es wie Sie aus muss eine Variable namens included_serializers haben, um zu tun, was ich wollte. Für mein Beispiel, hier ist, was Sie benötigen würden:

# 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 
Verwandte Themen