[英]Serialize model fields related through another model
我有四個這樣鏈接的模型:
class A:
some fields
class B:
ForeignKey('A')
class C:
ForeignKey('B')
class D:
ForeignKey('C')
現在,當我序列化D時,我也想序列化A的相關模型字段。當然,可以使用嵌套的序列化程序來完成,如下所示:
class ASerializer:
class Meta:
model = A
fields = ('id', some fields)
class BSerializer:
a_s = ASerializer(read_only=True)
class Meta:
model = B
fields('id', 'a_s')
class CSerializer:
b_s = BSerializer(read_only=True)
class Meta:
model = C
fields('id', 'b_s')
class DSerializer:
c_s = CSerializer(read_only=True)
class Meta:
model = D
fields('id', 'c_s')
但是,我只想在序列化D時只顯示相關A對象的字段,而不要包括C或B對象。 我該怎么做呢?
您可以在class CSerializer
定義serializers.SerializerMethodField()
:
class DSerializer:
c_s = serializers.SerializerMethodField()
@staticmethod
def get_c_s(item):
return item.c.b.a
class Meta:
model = D
fields('id', 'c_s')
文件: https : //www.django-rest-framework.org/api-guide/fields/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.