Ich bin in der Lage, die folgende Antwort von meiner API sans der fett gedruckten Text.Hinzufügen von Attributen zu einer Beziehung in Django Rest Framework mit JSON-API-Format
{ "data": { "type": "Benutzer", "id": "2", "Attribute": { "E-Mail": "[email protected]" " name ": "first lesen", }, "Beziehungen": { "Unternehmen": { "data": { "type": "Business", "id": "1" " Attribute ": { " Name ":" der Punkt :, "Adresse": "foo", } } },
Ich verwende Django Rest Framework JSON Api die Antwort auf JSON Api spec zu formatieren und ich frage mich, was ich tun müssen, um Attribute der Antwort in der Beziehung Objekt hinzugefügt zu bekommen. Es scheint, dass der Business-Serialisierer das Problem ist, aber ihre Dokumentation ist nicht so klar, wie man eine Antwort erhält, die so formatiert ist, wie es stattdessen zeigt, wie man nur den Primärschlüssel des zurückgegebenen Geschäfts erhält. Irgendwelche Ideen?
Mein Serializer sieht wie folgt aus:
from rest_framework import serializers
from rest_framework_json_api import serializers as srs
from rest_framework_json_api.relations import ResourceRelatedField, SerializerMethodResourceRelatedField
from businesses.serializers import BusinessSerializer
from businesses.models import Business
from . import models
class UserSerializer(serializers.ModelSerializer):
token = srs.SerializerMethodField()
# necessary for M2M fields & reverse FK fields
businesses = ResourceRelatedField(read_only=True, allow_null=True)
review_user = ResourceRelatedField(read_only=True, allow_null=True, many=True)
booking_user = ResourceRelatedField(read_only=True, allow_null=True, many=True)
#businesses = serializers.PrimaryKeyRelatedField(queryset=Business.objects.all(), required=False)
#businesses = BusinessSerializer(read_only=True)
"""Meta class tells Django what fields we want to take from the model"""
class Meta:
# links the serializer to the model class
model = models.User
# this is a tuple
fields = ('id', 'email', 'password', 'name', 'phone', 'location', 'token', 'has_business', 'is_active', 'businesses')
extra_kwargs = {'password': {'write_only': True}}