- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在网站上有一个联系表单,该表单正在发布到 CreateAPIView
以创建模型的新实例(最终通过电子邮件发送给管理员)。在我的序列化器上,我有一个蜜 jar 字段来帮助拒绝垃圾邮件。
型号:
class Message(models.Model):
name = ...
message = ...
和序列化器:
class MessageSerializer(serializers.ModelSerializer):
# Honeypot field
url = serializers.CharField(allow_blank=True, required=False)
class Meta:
model = Message
fields = '__all__'
def validate_url(self, value):
if value and len(value) > 0:
raise serializers.ValidationError('Spam')
return value
并查看:
class MessageView(generics.CreateAPIView):
''' Create a new contact form message. '''
serializer_class = MessageSerializer
我的问题是,就目前情况而言,当我发布到此 View 时,我收到错误:
TypeError: Got a
TypeError
when callingMessage.objects.create()
. This may be because you have a writable field on the serializer class that is not a valid argument toMessage.objects.create()
. You may need to make the field read-only, or override the MessageSerializer.create() method to handle this correctly.
很明显,seriazlier 正在尝试将 url
字段保存到 CreateApiView.perform_create()
我尝试将 read_only
添加到序列化器字段,但这意味着完全跳过 url_validate
方法。
如何在验证发生之前将该字段保留在序列化器上,并在 perform_create()
中调用 serializer.save()
之前将其删除?
最佳答案
您可以覆盖创建方法,例如:
class MessageSerializer(serializers.ModelSerializer):
# Honeypot field
url = serializers.CharField(allow_blank=True, required=False)
class Meta:
model = Message
fields = '__all__'
def validate_url(self, value):
if value and len(value) > 0:
raise serializers.ValidationError('Spam')
return value
def create(self, validated_data):
data = validated_data.pop('url')
return Message.objects.create(**data)
关于django - DRF : Remove field on model serializer after validation but before creation (on CreateAPIView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050624/
我使用的是基于 Eclipse 3.x 的 WID 6.1。 尝试右键单击文件夹时,新建-> 类,键入类的名称,然后单击完成,出现错误 "Creation of element failed. org
假设我想创建一个浏览器插件,每当某人单击我网页上的按钮时,该插件就会打开他们的软盘驱动器。 (你还记得那个老笑话吗?-别担心,我真的不想这么做。) 创建可在大多数浏览器和大多数操作系统上运行的浏览器插
我目前正在尝试在 Azure 容器实例上创建一个新容器,以在其上部署 .net core 应用程序镜像。 (我是这项技术的新手)。 我在 Azure 上创建了一个容器注册表,并在其上推送了一个镜像(.
我不确定我问的是否正确,但我知道你们都很聪明,能够弄清楚:)。我在压缩一些 python 类中的一些重复代码时遇到了麻烦。这是我的意思的一个例子...... class Parent: PAT
我想要扩展这些 C 预处理器行: #define _POUND_ #define _POUND_ _FALSE 0 _FALSE 展开,最后一行(即_FALSE)展开为0。我知道递归CPP不可能直接实
我需要创建 generic list可以充当List或 List因为我有以下情况。 if(e instanceof A) return A; else return B 但我想填充一个 List Re
我正在尝试构建一个共享对象,以便稍后在其他项目中使用共享对象中的函数 DoSomethingUseful()。它使用外部库以及我在多个项目中使用的一堆 header 。 使用 CMake,我创建了一个
void foo() { //some code MyClass m(); //some more code } C++ 标准是否确保 MyClass 类的构造函数将在 /
我正在尝试在 2D 游戏中创建斜坡。这个斜坡应该有一个 X 度。当现在一个球“滚过”这个斜坡时。这个坡度的效果应该改变,然后球的行为因此向后滚动,向前滚动或在其他地方初始化倾斜度。我认为我可以使用具有
我有一个开发分支,我想看看“分支创建”和现在的区别。实际上,我更感兴趣的是创建分支之后的提交,这更像是“创建分支”+1。 我知道我可以在 Git 命令中使用像 HEAD 和 HEAD~1 这样的简写。
在JavaScript: Understanding the Weird Parts讲师解释说,变量的内存是在所谓的创建阶段设置的(并且 undefined 已分配);然后执行阶段发生。但是,当我们不
我需要NodeJS代码来创建POST请求,以便从URL创建一个FB页面。必须代码有错误,我找不到它。错误消息为请求失败,状态代码为400。我没有包含accesToken字符串,但它存在于我的实际代码中
我开发了一个具有以下特点的 Fortran 代码: 全局变量 13 个带有多个子程序的模块 独立子程序 将英特尔 MKL 库用于 LAPACK 库(线性代数) 读写文本文件 代码变得相当大。即使在这个
我想创建一个数组 ArrayList .我尝试了以下方法: static ArrayList[] displayBlocks = new ArrayList[3]; 但是,我收到编译时错误: gene
云信息supports通过“堆栈创建选项”设置超时。但是这个部分在 serverless.yml 中?有什么解决方法吗? 最佳答案 查看actual code ,TimeoutInMinutes 参数
我们希望只有部分人能够在 Azure DevOps 云(?)存储库中创建“release/*”分支。 不幸的是,我在用户界面中找不到这个选项。我这里也找不到 https://learn.microso
我使用 Azure AD Graph API 差异查询来检测 Azure AD 中的更改。 对于 User 或 Group 类型的每个结果节点,如何区分该对象是新的还是仅更新的? 我使用ocp-aad
我正在发布简单的数据,例如 { "title" : "test Title" } 到(顺其自然)/posts uri,例如类似 RestAssured.baseURI = "http://localh
我正在尝试为撇号创建一个产品引擎。我在扩展“页面设置”表单时遇到问题,目前我想添加一个简单的文本区域来向页面添加概要 - 最终我想添加“产品”设置,但我需要先完成基础知识。 我创建了一个表单和一个设置
我使用 Azure AD Graph API 差异查询来检测 Azure AD 中的更改。 对于 User 或 Group 类型的每个结果节点,如何区分该对象是新的还是仅更新的? 我使用ocp-aad
我是一名优秀的程序员,十分优秀!