在序列化程序中应该在哪里更改初始数据?

问题:

在序列化程序中我应该在哪里更改initial_data

是否建议在initial_data方法中更改validate_field_name()

validate_field_name方法应该返回某些内容吗?

代码:

from django.contrib.auth import get_user_model
from rest_framework import serializers


class MySerializer(serializers.ModelSerializer):

    def validate_owner(self,owner_id):
        try:
            return get_user_model().objects.get(owner_id=owner_id)
        except get_user_model().DoesnotExist or get_user_model().MultipleObjectsreturned:
            return owner_id
  

如果我没有在initial_data方法中更改validate_field_name,我将提取两次数据。

例如:

from django.contrib.auth import get_user_model
from rest_framework import serializers
from rest_framework.exceptions import ValidationError


class MySerializer(serializers.ModelSerializer):

    def validate_owner(self,owner_id):
        try:
            get_user_model().objects.get(owner_id=owner_id)
        except get_user_model().DoesnotExist or get_user_model().MultipleObjectsreturned:
            raise ValidationError('User does not exists.')

    def create(self,validated_data):

        validated_data['owner'] = get_user_model().objects.get(owner_id=validated_data['owner_id'])

        # create instance
ymh1982611 回答:在序列化程序中应该在哪里更改初始数据?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2958928.html

大家都在问