代码
class DesignInitSerializer(serializers
.ModelSerializer
):
element
= serializers
.SerializerMethodField
()
class Meta:
model
= Design
fields
= ("id", "name", "element", "category")
def get_element(self
, instance
):
user
= self
.context
["request"].user
details
= Details
.objects
.filter(design
=instance
, category__in
=(1, 2), user
=user
).order_by
("category")
serializer
= ElementSerializer
(details
, many
=True)
return serializer
.data
class ProjectsRetrieveSerializer(serializers
.ModelSerializer
):
designs
= serializers
.SerializerMethodField
()
class Meta:
model
= Projects
fields
= ("id", "xm_code", "sell_linkman", "info", "designs")
def get_designs(self
, instance
):
user
= self
.context
["request"].user
designs
= Design
.objects
.filter(id__in
=mds_ids
)
serializer
= DesignInitSerializer
(designs
,many
=True)
return serializer
.data
在 serializer 第一层可以获取到 user = self.context[“request”].user 但是在 DesignInitSerializer 中就获取不到了 原因这一层需要自己手动传入 context
serializer = DesignInitSerializer(designs,many=True,context={‘request’:self.context[“request”]})
需要自定义传入 可以通过 context参入传入