如何序列化已经引用另一个表的外键的外键。目前我有三个表A,B和C(A-> B-> C)。 A指的是B而B指的是C.我需要获得如下所示的JSON
A:
{
A_id:1,
A_name:'aaa',
B:
{
B_id:1,
B_name:'bbb'
C:
{
C_id:1,
C_name:'ccc'
}
}
}
我能够获得一个参考的JSON。即; A->乙
我使用RelatedField
并覆盖to_representation
函数来实现此目的。这是我使用的代码
class B_foreign(serializers.RelatedField):
def to_representation(self, value):
return value
class ASerializer(serializers.ModelSerializer):
B = B_foreign(source='B_id', read_only=True)
class Meta:
model = A
fields = '__all__'
现在,我将如何从B中引用“C”?做另一个RelatedField类并覆盖to_representation()函数? 我也试过了。它没用。有人可以帮我解决问题吗?
答案 0 :(得分:0)
您只需使用给定型号的序列化器:
class CSerializer(serializers.ModelSerializer):
class Meta:
model = C
fields = '__all__'
class BSerializer(serializers.ModelSerializer):
C = CSerializer()
class Meta:
model = B
fields = '__all__'
class ASerializer(serializers.ModelSerializer):
B = BSerializer()
class Meta:
model = A
fields = '__all__'