2

自分のサイトに安らかなAPIを設定したいと思います。私はdjango-rest-frameworkを使いました。 データベースからオブジェクトを取得すると、関連オブジェクトが表示されません。スニペット以下なぜdjango-rest-frameworkにOneToOneFieldデータが表示されないのですか - django

は私の最初のモデル(親モデル)である:あなたが第二のスニペットで見るよう

class Klass(models.Model): 
    title = models.CharField(max_length=50) 
    description = models.CharField(max_length=500) 
    teacher = models.ForeignKey(Profile,related_name='teacher', on_delete=models.CASCADE) 
    university = models.CharField(max_length=50, blank=True, null=True) 

、:

class Profile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile',on_delete=models.CASCADE) 
    name = models.CharField(max_length=30) 
    family = models.CharField(max_length=50) 

と以下のスニペットは、私の第2のモデル(子モデル)でありますteacherProfileモデルからその値を取得します。

しかし、django-rest-framework APIビューでは、茶器の名前を表示する代わりにpkと表示されます。

# serializer 
class KlassSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Klass 
     fields = ('id', 'title', 'description', 'teacher') 

# view 
class KlassView(APIView): 

    def get(self, request, pk=None): 
     if pk is not None: 
      klass = Klass.objects.filter(pk=pk).get() 
      serializer = KlassSerializer(klass) 
      return Response({'message': 'class get ', 'data': serializer.data,}) 

、これが結果です::

以下のスニペットは、私のシリアライザおよび図である

{ 
    "message": "class get ", 
    "data": { 
     "id": 13, 
     "title": "ُThe First Class", 
     "description": "Nothing for now!", 
     "teacher": 2 
    } 
} 

どのように私はこの問題を解決することができますか? おかげ

答えて

1

は、よりdetaile nested-relationships

class TeacherSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Profile 
     fields = ('name') 

class KlassSerializer(serializers.ModelSerializer): 
    teacher = TeacherSerializer(read_only=True) 

    class Meta: 
     model = Klass 
     fields = ('id', 'title', 'description', 'teacher') 
+0

申し訳ありませんが、それを試し、それが働いた真=多くを除去することで、ええmany' –

+0

'削除してみてください。 – msln

+0

お気軽に –

関連する問題