python - Django Rest框架序列化器: required_fields

标签 python django django-rest-framework serialization

是否可以将必填字段设置为序列化器内的列表? 我不想用每行中的类型覆盖每个字段,如下所示:

    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=Trueblank=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/

相关文章:

python - 在 DRF modelViewSet 上执行创建和更新的自定义函数

python - Django 忽略过滤器

python - 如何替换或编辑 django rest 框架路由器中的查找参数?

python - 分发 Python 应用程序 "with"a venv

python - 如何在 Python 中实现必需的属性

带有图标而不是标签的 Django RadioButtons?

django - 如何在 Django 中按 json 数组字段的最后一个元素进行过滤

jquery - Tastypie 不发送 cookie

python sympy(不等式或关系)到(设置或间隔)

python - 在 jupyter notebook 的单元格中使用 sudo