当前位置: 首页 > 知识库问答 >
问题:

如何传递参数到串行化在django-rest框架?

刁钧
2023-03-14

我有一个序列化器:

class DataSerializer(serializers.Serializer):
    skip_place = True
    name = serializers.CharField(max_length=None)
    place = serializers.CharField(max_length=None,required=False)

现在观察跳过位置。如果我将DataSerializer实例调用为:

DataSerializer(data=data,skip\u place=False)

然后它应该像在代码中一样在place上进行验证。

但是我无法传递参数skip\u place=True。我得到一个错误:TypeError:\uuuuu init\uuuuuuuuuu()得到一个意外的关键字参数“skip\u place”

共有2个答案

谢海阳
2023-03-14

Hi您可以重写序列化器的初始化方法,从那里弹出值并分配到变量。

class DataSerializer(serializers.Serializer):
   skip_place = True
   name = serializers.CharField(max_length=None)
   place = serializers.CharField(max_length=None,required=False)

   def __init__(self, *args, **kwargs):
       self.skip_place = kwargs.pop('skip_place ', False)
       super().__init__(*args, **kwargs)

   def validate_place(self,value):
     if not self.skip_place and len(value)<=0:
        raise serializers.ValidationError("Place is required.")
华宪
2023-03-14

您可以将其与其他上下文一起发送。

鉴于,;

DataSerializer(data=data, context={'skip_place': True}) # or False

在序列化器中;

class DataSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=None)
    place = serializers.CharField(max_length=None,required=False)

    def validate_place(self,value):
        skip_place = self.context.get("skip_place") # <- here we use self.context to get extra args
        if not skip_place and len(value)<=0:
            raise serializers.ValidationError("Place is required.")
 类似资料:
  • [编辑:url中的“<”已被删除,只是它不被视为标记,因此未显示] views.py test.py

  • 问题内容: 在Django rest框架中,我可以使用danialfarid / ng-file- upload 上传单个文件 views.py: serializers.py: models.py: 当我尝试上传多个文件时。我进去 chrome开发人员工具:请求有效负载 响应: 我不知道如何编写用于上传多个文件的序列化程序。任何身体都请帮忙。 提前致谢 问题答案: 我设法解决了这个问题,希望对社

  • 我试图将一个参数从命令行传递到java类。我关注了这篇文章:http://gradle.1045684.n5.nabble.com/gradle-application-plugin-question-td5539555.html,但是代码对我来说不起作用(也许它不适合JavaExec?)。以下是我所尝试的: 上面硬编码的args值的输出是: 任何关于如何将命令行参数传递给gradle的指针都很感

  • 问题内容: 我正在尝试为我的应用程序编写查询,但是遇到了一些麻烦。我需要将数据库的一个字段作为参数传递,例如: 因为WHERE子句和ORDER BY子句是动态的,所以用户可以选择。 使用它没有用。 问题答案: JasperReports中 有两个用于参数引用的语法表达式: 和和 。 $ P {paramName}语法 主要用于设置 WHERE 输入参数值。替换算法是“智能”的,其实现使用java.

  • 所以我使用REST框架创建了我的“API”,现在尝试为它做过滤。这就是我的的样子: 因此,我希望在我的JSON文件中看到“所有乘客在特别工作空间”或“所有乘客在特别航空公司”等。 根据查询参数进行筛选:http://www.django-rest-framework.org/api-guide/Filtering/#filtering-ats-query-parameters 不能真的得到它..

  • 将函数绑定到按钮是简单明了的: 但我看不到一种向函数传递参数(参数)的方法,当我这样做时: 该函数在页面加载时调用,并且不再调用。 是否有可能将参数传递给从? null null 我只是找到了一个很奇怪的方法。从内联处理程序调用该函数可以工作。