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}
        }
Вернуться на верх