Django REST framework: Сериализатор для использования max_length из модели
У меня есть модель
class Person(models.Model):
name = models.CharField(max_length=254)
и связанный с ним сериализатор
class PersonSerializer(serializers.Serializer):
name = serializers.CharField(max_length=254)
Есть ли способ заставить CharField автоматически определять max_length из модели и использовать это при валидации?
Использование Person._meta.get_field('name').max_length может быть вариантом, но кажется немного громоздким для использования в каждом поле. Может быть, переопределить CharField с пользовательской реализацией? Или есть другие варианты?
If you want to translate a model in a straightforward way to a serializer, you can use a ModelSerializer. You can inject extra parameters to the constructors of the serializer fields with the extra_kwargs field [drf-doc], so:
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('name',)
extra_kwargs = {
'name': {'required': True}
}