Чтобы установить пользовательский класс для поля сериализатора в вашем API, вы должны определить пользовательский шаблон для типа поля, а затем определить поле сериализатора с этим пользовательским шаблоном.
Сначала создайте пользовательский шаблон, например, для поля ввода, который является копией встроенной в остальные структуры input.html
с добавлением {{ style.class }}
рядом с form-control
. Поместите это в папку шаблонов, либо в папку шаблонов вашего приложения, либо в папку шаблонов проекта.
custom_input.html
<div class="form-group {% if field.errors %}has-error{% endif %}">
{% if field.label %}
<label class="col-sm-2 control-label {% if style.hide_label %}sr-only{% endif %}">
{{ field.label }}
</label>
{% endif %}
<div class="col-sm-10">
<input name="{{ field.name }}" {% if style.input_type != "file" %}class="form-control {{ style.class }}"{% endif %} type="{{ style.input_type }}" {% if style.placeholder %}placeholder="{{ style.placeholder }}"{% endif %} {% if field.value is not None %}value="{{ field.value }}"{% endif %} {% if style.autofocus and style.input_type != "hidden" %}autofocus{% endif %}>
{% if field.errors %}
{% for error in field.errors %}
<span class="help-block">{{ error }}</span>
{% endfor %}
{% endif %}
{% if field.help_text %}
<span class="help-block">{{ field.help_text|safe }}</span>
{% endif %}
</div>
</div>
А затем объявите ваш сериализатор с custom_input.html
и атрибутом class, установленным в требуемые классы. В этом примере test1
и test2
классы будут добавлены рядом с form-control
class.
serializers.py
class PostSerializer(serializers.ModelSerializer):
title = serializers.CharField(style={'template': 'your_template_folder/custom_input.html', 'class': 'test1 test2'})
class Meta:
model = Post
fields = ('id', 'title', 'text')