小编ued*_*mir的帖子

测试 Postman 响应体 Json 是数组还是对象

我有一个正在测试的 API,我希望responseBody它是一个 Json 对象(以“{”开头)。然而,由于意外事件,响应可能会作为数组返回(以“[”开头)。

如何确定responseBody使用 Postman 测试的类型(数组或对象)?

到目前为止,我所拥有的最好的是:当期待一个对象(不是一个数组)

var bodyJson = pm.response.json();
tests["Response should not be an array"] = !(bodyJson instanceof Array);
Run Code Online (Sandbox Code Playgroud)

javascript postman

7
推荐指数
2
解决办法
5154
查看次数

DRF - 如何根据条件更改 serializer.PrimaryKeyRelatedField 的过滤器查找键?

我正在尝试serializers.PrimaryKeyRelatedField根据序列化程序上的其他布尔字段更改的过滤器查找键,但我无法成功。PrimaryKeyRelatedFieldpk默认按键过滤。在某些情况下(如果condition序列化程序上的字段作为 发送True),我只想使用相关模型字段上的另一个字段更改该过滤键,例如remote_id.

class SomeSerializer(serializers.Serializer):
    condition = serializers.BooleanField(default=False)
    model_pks = serializer.PrimaryKeyRelatedField(queryset=Model.objects.all(), many=True)

Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试创建继承自PrimaryKeyRelatedField并覆盖get_queryset方法(不确定是否覆盖正确方法)的新字段,但我无法访问conditionmodel_pks字段值。

class CustomPrimaryKeyRelatedField(PrimaryKeyRelatedField):
    def get_queryset(self):
        queryset = self.queryset
        # model_pks = sent model_pks
        if condition:
            return queryset.filter(remote_id__in=model_pks)
        return queryset.filter(id__in=model_pks)

Run Code Online (Sandbox Code Playgroud)

另外,我尝试使用SerializerMethodField而不是PrimaryKeyRelatedField喜欢;

class SomeSerializer(serializers.Serializer):
    condition = serializers.BooleanField(default=False)
    model_pks = serializer.SerializerMethodField()

    def get_model_pks(self, value):
        pks = self.initial_data.get('model_pks', [])
        if value.get('condition', False):
            return Model.objects.filter(remote_id__in=pks)
        return Model.objects.filter(pk__in=pks)

Run Code Online (Sandbox Code Playgroud)

它提供了基于以下内容的更改查找键,condition但这次我无法model_pks使用 …

python django django-queryset django-serializer django-rest-framework

5
推荐指数
1
解决办法
909
查看次数