2016-09-12 6 views
0

私はすべてのソリューションを試しました。それでも解決できません。ここにコードがあります。Django Rest APIで関連するモデルをシリアル化する方法は?

models.py

class Car(models.Model): 
    car_name = models.CharField(max_length=250) 
    car_description = models.CharField(max_length=250) 


    def __str__(self): 
     return self.car_name + ' - ' + str(self.pk) 

class Owners(models.Model): 
    car = models.ForeignKey(Car, on_delete=models.CASCADE, default=0) 
    owner_name = models.CharField(max_length=250) 
    owner_desc = models.CharField(max_length=250) 

    def get_absolute_url(self): 
     return reverse('appname:index') 

    def __str__(self): 
     return self.owner_name + ' - ' + self.owner_desc 

serializers.py

class OwnersSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Owners 
     fields = '__all__' 


class CarSerializer(serializers.ModelSerializer): 

    owners = OwnersSerializer(many=True, read_only=True) 
    class Meta: 
     model = Car 
     fields = '__all__' 

views.py

class CarList(APIView): 

    def get(self, request): 
     cars = Car.objects.all() 
     serializer = CarSerializer(cars, many=True) 
     return Response(serializer.data) 

    def post(self): 
     pass  

「Car」クラスの特定のオブジェクトに関連するすべての「所有者」オブジェクトを表示することはできません。

+0

出力シリアル化されたデータはどのように見えますか?そして、それはどのように見えますか? –

+0

説明フィールドも表示されません。 '__all__'を使うのではなく、すべてのフィールドを含めるよう明示的に' fields'値を設定しようとしましたか? –

+0

私は説明データを取得しました。編集されました。 [ { "car_name": "ADA"、 "car_description": "アダド" }、 { "car_name": "sdada"、 "car_description": "ファファ" } ] –

答えて

1

逆参照を作成するには、ForeignKeyに関連する名前を定義する必要があります。

class Owners(models.Model): 

    car = models.ForeignKey(Car, on_delete=models.CASCADE, default=0, related_name='owners') 
+0

これが働い。ありがとう。今、私はその流れを理解しています。 –

関連する問題