[英]Serializer removing data in Django 3.1
我正在嘗試驗證數據以存儲它。 但是序列化程序正在刪除有效字段。 這是我的代碼:
模型.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__'
查看.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)
一些模型字段設置為editable=False
導致問題。 DRF 認為不應編輯這些字段,從而將這些字段變為read_only
。
所以,
刪除editable=False
並遷移
class MyModel(models.Model):
user_id = models.UUIDField(
'action uid',
default=uuid.uuid4,
null=False,
primary_key=True,
blank=False,
editable=False,
unique=True
)
# other fields
在序列化器類中顯式定義相應的字段。
class MyModelSerializer(serializers.ModelSerializer):
user_id = serializers.UUIDField() # other `editable=False` fields
class Meta:
model = MyModel
fields = '__all__'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.