- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 django Rest 框架方面遇到问题。
我的前台正在向 drf 发布数据,其中一个字段可能为 null
或空字符串 ""
。
# models.py
class Book(models.Model):
title = models.CharField(max_length=100)
publication_time = models.TimeField(null=True, blank=True)
# serializers.py
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('id', 'title', 'publication_time')
publication_time
可以是空白
或""
。
空白案例有效,事实上,当我发布 json {"title": "yeah a book", "publication_time": none}
时,一切都很好。
当我发送 {"title": "yeah a book", "publication_time":""}
时,我确实收到验证错误 “时间格式错误。请使用其中之一格式改为:hh:mm[:ss[.uuuuuu]]。”
我尝试向序列化器类添加字段验证器:
def validate_publication_time(self, value):
if not value:
return None
或者甚至使用 extra_kwargs
# ....
def empty_string_to_none(value):
if not value:
return None
# ....
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('id', 'title', 'publication_time')
extra_kwargs = {'publication_time': {'validators' : [empty_string_to_none]} }
我想做的是在任何验证发生之前或作为第一个验证规则将空字符串转换为 None (应该被序列化器和模型接受)。
问题:
问题是 validate_publication_time
从未被调用,并且在调用该函数之前我就收到了验证错误。正如我所言understood验证器的运行有特定的顺序,但现在我不知道如何解决我的问题。
问题:
我想要做的是实际清理数据,以便在运行任何验证之前将 ""
转换为 None
。是否可以?怎么办?
编辑:这是我的序列化器的表示:
# from myapp.serializers import BookSerializer
# serializer = BookSerializer()
# print repr(serializer)
# This is the print result:
BookSerializer():
id = IntegerField(label='ID', read_only=True)
title = CharField(max_length=100)
publication_time = TimeField(allow_null=True, required=False)
正如您所看到的,publication_time 字段可能为空,不是吗?
最佳答案
我也遇到了同样的问题,终于找到了解决方案。
为了在错误发生之前处理''
,需要重写to_internal_value
方法:
class BookSerializer(serializers.ModelSerializer):
def to_internal_value(self, data):
if data.get('publication_time', None) == '':
data.pop('publication_time')
return super(BookSerializer, self).to_internal_value(data)
关于json - ModelSerializer 空字符串的字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37124344/
我正在尝试用 Java 构建一个字符串,该字符串的长度最多为 3,最少为 1。 我正在根据整数数组的内容构建字符串,如果数组的内容为 -1,我想在字符串中输出一个空字符。否则字符串将包含整数的字符版本
我有一个类,其中有一个方法可以在字符串中包含 NUL 字符的情况下终止程序。具体表达是这样的: stringVar.indexOf('\u0000') < 0 这个字符串是通过 Scanner 从用户
我有一个 wchar_t 数组。我需要在数组中的特定位置添加一个 unicode 空字符。 wchar_t var1[100]; var1[79] = '\u0000'; 我尝试了上面的方法,但出现以
好吧,这听起来可能是重复的,但我已经尝试了所有可能性,例如 str.strip()、str.rstrip()、str.splitline (),还 if-else 检查像: if str is not
System.out.println("-----------------------------------------------------------"); System.out.pr
我有一个奇怪的问题。我从公司内部的许多不同应用程序接收数据,并将这些数据显示在网站上。根据发送数据的系统,数据本身可能在字符串中包含一些奇怪的字符。我的问题是我有一个用户可以搜索以允许其中包含此数据的
我遇到了 aSSL ,这似乎有几年历史了,想知道是否有人有其他“安全”AJAX 连接代码示例?显然,这不如使用 SSL 证书安全,但使用 null character SSL在那里进行攻击(最近针对
我有一个类似于以下内容的 pyspark 数据框: df = sql_context.createDataFrame([ Row(a=3, b=[4,5,6],c=[10,11,12], d='b
我有以下要执行的查询: MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_na
每当 rails 变量等于 nil(或者实际上每当我使用 rails 代码(参见第 3 个代码示例))时,我的 html 中就会得到一串空字符。 new.html.haml %h1.editable.
我是一名优秀的程序员,十分优秀!