Python 序列化程序删除Django 3.1中的数据
我试图验证数据以存储它。但是序列化程序正在删除有效字段。这是我的代码: models.pyPython 序列化程序删除Django 3.1中的数据,python,django,Python,Django,我试图验证数据以存储它。但是序列化程序正在删除有效字段。这是我的代码: models.py class MyModel(models.Model): user_id = models.UUIDField('action uid',default=uuid.uuid4,null=False,primary_key=True,blank=False,editable=False, unique=True) city = models.CharField('City', max_le
class MyModel(models.Model):
user_id = models.UUIDField('action uid',default=uuid.uuid4,null=False,primary_key=True,blank=False,editable=False, unique=True)
city = models.CharField('City', max_length=50, null=True, blank=True, editable=False)
latitude = models.CharField('Latitude', max_length=50, null=True, blank=True, editable=False)
longitude = models.CharField('Longitude', max_length=50, null=True, blank=True, editable=False)
datetime = models.DateTimeField('datatime', null=False, blank=False, editable=False)
序列化程序.py
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
view.py
def save_my_data(self, request):
user_info ={
"user_id": resquest.user.user_uid,
"city": resquest.user.city,
"latitude": "17.6801",
"longitude": "83.2016",
"datetime": timezone.now()
}
serializer = serializers.MyModelSerializer(data=user_info)
serializer.is_valid(raise_exception=True) # Not error thrown.
print( serializer.data ) # returns void
有什么想法吗?提前感谢。您没有调用序列化程序的.save()
方法
serializer = serializers.MyModelSerializer(data=user_info)
serializer.is_valid(raise_exception=True)
print("This is validated data, ", serializer.validated_data)
serializer.save()
print("This is saved data, ", serializer.data)
方法2
在序列化程序类中显式定义相应的字段
class MyModelSerializer(serializers.ModelSerializer):
user_id = serializers.UUIDField()
# other `editable=False` fields
class Meta:
model = MyModel
fields = '__all__'
类MyModelSerializer(serializers.ModelSerializer):
user_id=serializers.UUIDField()
#其他'editable=False'字段
类元:
model=MyModel
fields='\uuuu all\uuuu'
您没有调用序列化程序的.save()
方法
serializer = serializers.MyModelSerializer(data=user_info)
serializer.is_valid(raise_exception=True)
print("This is validated data, ", serializer.validated_data)
serializer.save()
print("This is saved data, ", serializer.data)
方法2
在序列化程序类中显式定义相应的字段
class MyModelSerializer(serializers.ModelSerializer):
user_id = serializers.UUIDField()
# other `editable=False` fields
class Meta:
model = MyModel
fields = '__all__'
类MyModelSerializer(serializers.ModelSerializer):
user_id=serializers.UUIDField()
#其他'editable=False'字段
类元:
model=MyModel
fields='\\\\\\\\\/code>在访问数据['user\u uid']
的行中,从哪里获取数据
?请展示您的视图,它是如何在代码中真正编写的,当前的示例应该抛出,因为没有数据
defined@GProst我已经更新了函数你真的确定这段代码被执行了吗?是的,先生,我甚至在serializer=serializers.MyModelSerializer之前加了一个print(user\u info)
(data=user\u info)
它在调用之后和之后显示数据。它是有效的
并且进行打印。你确定重新请求。user.user\u uid
正在重新调用“正确有效的数据”?你从哪里获得数据
,在你访问数据['user\u uid'的那一行
?请展示您的视图,它是如何在代码中真正编写的,当前示例应该抛出,因为没有数据
defined@GProst我已经更新了函数你真的确定这段代码被执行了吗?是的,先生,我甚至在serializer=serializers.MyModelSerializer之前加了一个print(user\u info)
(data=user\u info)
它在调用之后和之后显示数据。是否有效
并进行打印您确定resquest.user.user\u uid
正在重新展开“正确有效的数据”?当我执行serializer.save()时
它抛出一个错误,因为用户\u id
不能为空。这没有意义吗?您没有传递数据,这就是为什么会出现错误。顺便说一下,您可以检查序列化程序。验证的\u数据
要知道在DB写入/保存操作之前验证了哪些数据点,这是问题所在,这一行:序列化程序=serializers.MyModelSerializer(data=user\u info)
正在删除有效数据。当我执行serializer.save()时,您确定resquest.user.user\u uid
正在重新展开“正确有效的数据”@jefferson吗
它抛出一个错误,因为用户\u id
不能为空。这没有意义吗?您没有传递数据,这就是为什么会出现错误。顺便说一下,您可以检查序列化程序。验证的\u数据
要知道在DB写入/保存操作之前验证了哪些数据点,这是问题所在,这一行:序列化程序=serializers.MyModelSerializer(data=user\u info)
正在删除有效数据。您确定resquest.user.user\u uid
正在重新展开“正确有效的数据”@Jefferson