私のAPIから次の応答を返すことができます。Django Rest FrameworkのリレーションシップにJSON API形式のアトリビュートを追加する
{ "データ":{ "タイプ": "ユーザー"、 "ID": "2"、 は、 "属性":{ "メール": "[email protected]"、 "名前 ": "最初最後"、 }、 "関係":{ "ビジネス":{ "データ":{ "タイプ": "ビジネス"、 "ID": "1" " の属性":{ " name ":" the spot :, "address": "foo"、 } }} 、
私は、JSONのAPI仕様への応答をフォーマットするDjango Rest Framework JSON Apiを使用していると私は私が関係オブジェクト内の応答に追加された属性を取得するために何をする必要があるかと思いまして。ビジネスシリアライザが問題になっているように見えますが、代わりに、ビジネスの主キーだけを返す方法を示しているので、そのような形式のレスポンスを取得する方法についてはドキュメントでは分かりません。何か案は?
私のシリアライザは、次のようになります。)
1、関連するビジネス・シリアライザを割り当てます
それは、この問題に対処する適切な方法のように見えます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}}