Python 序列化程序删除Django 3.1中的数据

Python 序列化程序删除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

我试图验证数据以存储它。但是序列化程序正在删除有效字段。这是我的代码:

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_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