是否可以将必填字段设置为序列化器内的列表? 我不想用每行中的类型覆盖每个字段,如下所示:
name = serializers.CharField(required=True)
description = serializers.CharField(required=True)
date_start = serializers.DateTimeField(required=True)
date_end = serializers.DateTimeField(required=True)
我只想枚举字段的名称
class CampaignStepFirstSerializer(serializers.ModelSerializer):
class Meta:
model = Campaign
fields = (
'name',
'description',
'date_start',
'date_end',
)
required_fields = fields
最佳答案
如果模型字段是用null=True
或blank=True
实例化的,或者如果模型字段有默认值,则序列化器将自动设置相应的字段为 required=False
。 (参见 rest_framework.utils.field_mapping.get_field_kwargs
的来源)。
如果您需要覆盖此行为,可以执行以下操作:
class CampaignStepFirstSerializer(serializers.ModelSerializer):
class Meta:
model = Campaign
fields = (
'name',
'description',
'date_start',
'date_end',
)
# 1st option. If some fields are required
extra_kwargs = {
'name': {'required': True},
'description': {'required': True},
'date_start': {'required': True},
'date_end': {'required': True},
}
# 2nd option. If all the fields are required:
extra_kwargs = {i:{'required': True} for i in fields}
关于python - Django Rest框架序列化器: required_fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59058364/