我正在尝试创建一个RESTful api端点来创建一个新用户。这就是我放入序列化器的内容。
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”,则将“教育”作为我的数据库表;但是,如果没有输入,请使其为空。如何实现呢?
答案 0 :(得分:0)
您可以尝试以下方法:
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;
答案 1 :(得分:0)
要使字段为可选,可以使用extra_kwargs
字典。为了使它起作用,必须在fields
中明确声明该字段。
class FooSerializer(serializers.ModelSerializer):
...
class Meta:
...
fields = ('bar', 'baz',)
extra_kwargs = {'bar': {'required': False}}
通常,请尽量不要使用fields = '__all__'
,而应显式声明字段。这样可以防止您以后意外暴露敏感区域。