簡體   English   中英

序列化通過另一個模型關聯的模型字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM