django serializer self.context[“request“] 设置

tech2023-07-23  121

代码

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 # todo 报错 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 # ok 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参入传入

最新回复(0)