如何使 validate_data 字段可选?
How to make a validate_data field optional?
我正在尝试创建一个 RESTful api 端点来创建新用户。这就是我在 serializer.py
中输入的内容
class UserSerializer(serializers.ModelSerializer):
Class Meta:
model = User
field = ('name', 'division', 'image',)
extra_kwargs = {'division': {'required': False}}
def create(self, validated_data):
newUser = User.objects.create(
name = validated_data['name'],
division = validated_data['division']
image = validated_data['image']
)
return newUser;
现在我想做的是让除法可选,例如,如果输入除法是 "Education" 那么 put 是因为 education 是我的数据库 table;但是,如果没有输入,请将其清空。如何实现?
你可以试试这个:
def create(self, validated_data):
division = None
if validated_data['division']:
division = validated_data['division']
newUser = User.objects.create(
name = validated_data['name'],
division = division
image = validated_data['image']
)
return newUser;
要使字段成为可选字段,您可以使用 extra_kwargs
字典。为了使其工作,必须在 fields
.
中显式声明该字段
class FooSerializer(serializers.ModelSerializer):
...
class Meta:
...
fields = ('bar', 'baz',)
extra_kwargs = {'bar': {'required': False}}
一般来说,尽量不要使用fields = '__all__'
,而是显式声明字段。这将保护您以后不小心暴露敏感字段。
我正在尝试创建一个 RESTful api 端点来创建新用户。这就是我在 serializer.py
中输入的内容class UserSerializer(serializers.ModelSerializer):
Class Meta:
model = User
field = ('name', 'division', 'image',)
extra_kwargs = {'division': {'required': False}}
def create(self, validated_data):
newUser = User.objects.create(
name = validated_data['name'],
division = validated_data['division']
image = validated_data['image']
)
return newUser;
现在我想做的是让除法可选,例如,如果输入除法是 "Education" 那么 put 是因为 education 是我的数据库 table;但是,如果没有输入,请将其清空。如何实现?
你可以试试这个:
def create(self, validated_data):
division = None
if validated_data['division']:
division = validated_data['division']
newUser = User.objects.create(
name = validated_data['name'],
division = division
image = validated_data['image']
)
return newUser;
要使字段成为可选字段,您可以使用 extra_kwargs
字典。为了使其工作,必须在 fields
.
class FooSerializer(serializers.ModelSerializer):
...
class Meta:
...
fields = ('bar', 'baz',)
extra_kwargs = {'bar': {'required': False}}
一般来说,尽量不要使用fields = '__all__'
,而是显式声明字段。这将保护您以后不小心暴露敏感字段。