Django REST 框架:从模型中使用 max_length 的序列化程序
Django REST framework: Serializer to use max_length from model
我有模型
class Person(models.Model):
name = models.CharField(max_length=254)
和相关的序列化器
class PersonSerializer(serializers.ModelSerializer):
name = serializers.CharField(required=True, max_length=254)
class Meta:
model = Person
fields = ('name',)
有没有办法让 CharField
从模型中自动检测 max_length
并在验证中使用它?
使用 Person._meta.get_field('name').max_length
可能是一种选择,但感觉在每个领域都使用起来有点麻烦。也许用自定义实现覆盖 CharField
?或者还有其他选择吗?
如果您想以直接的方式将模型转换为序列化程序,可以使用 ModelSerializer
。您可以使用 extra_kwargs
field [drf-doc] 向序列化程序字段的构造函数注入额外的参数,因此:
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('name',)
<strong>extra_kwargs</strong> = {
'name': {'required': True}
}
我有模型
class Person(models.Model):
name = models.CharField(max_length=254)
和相关的序列化器
class PersonSerializer(serializers.ModelSerializer):
name = serializers.CharField(required=True, max_length=254)
class Meta:
model = Person
fields = ('name',)
有没有办法让 CharField
从模型中自动检测 max_length
并在验证中使用它?
使用 Person._meta.get_field('name').max_length
可能是一种选择,但感觉在每个领域都使用起来有点麻烦。也许用自定义实现覆盖 CharField
?或者还有其他选择吗?
如果您想以直接的方式将模型转换为序列化程序,可以使用 ModelSerializer
。您可以使用 extra_kwargs
field [drf-doc] 向序列化程序字段的构造函数注入额外的参数,因此:
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('name',)
<strong>extra_kwargs</strong> = {
'name': {'required': True}
}