下面的代码显示了我的问题:
在我的django www.example.com中models.py我有如下内容:
class MyModel(Model):
test_field = SlugField(blank=True, null=False)
# some other not-null not-blank fields here
def save(self, *args, **kwargs):
self.test_field = .... # Setting with a value calculated form the other not-null not-blank fields
这里是我的序列化器:
from rest_framework import serializers
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = [ ...., 'test_field', ]
在我的www.example.com中views.py,类似于:
def post_endpoint(request):
data = JSONParser().parse(request)
serializer = MyModelSerializer(data=data)
if serializer.is_valid():
....
serializer.save()
return JsonResponse(serializer.data, status=201)
这是按预期工作:我可以发送一个对象到我的 post_endpoint,而不需要我的 test_field,我得到了我的结果,test_field 设置为预期的。serializer.is_valid() 在这种情况下返回True。
什么问题?我需要相同的功能,但使用FloatField而不是 SlugField。但是我注意到 serializer.is_valid() 在这种情况下返回False,并且在我的视图函数中的 serializer.errors 中得到一个“This field may not be null.”。
FloatField和SlugField有什么不同?我怎样才能获得预期的功能也与FloatField?
djangorestframework==3.14.0 Django==4.0.5
1条答案
按热度按时间dzhpxtsq1#
我给予了一下,但它工作得很好:
模型
序列化器
视图
url
请求
我注意到您的代码中有一个问题,就是对序列化器输入数据的请求进行JSON解析。这是不需要的日志,因为你按照上述程序.