Django Модель verbose_name как имена ответов строк API
Поскольку я не могу сохранять специальные символы в полях в модели django, мне приходится обходить это. Например: Я хотел бы иметь поле "km/h". Поэтому я использую его следующим образом:
class Unit(models.Model):
kmh = models.FloatField(null=True, db_column='km/h', verbose_name='km/h')
тогда у меня есть пример сериализатора:
class UnitSerializer(serializers.ModelSerializer):
class Meta:
model = Unit
fields = ['kmh']
а когда я буду использовать его с APIViews ответ, который будет включать поле, будет выглядеть так:
{
"kmh":10,
}
Я бы хотел, чтобы это выглядело как мое verbose_name so:
{
"km/h":10
}
Как я могу это сделать? У меня около 30 таких полей со специальными символами
Вы можете определить имена полей со специальными символами, обновляя locals(), но я бы настоятельно советовал не этого делать: и в Python, и в JavaScript имена переменных с пробелами делают менее удобным извлечение атрибутов, обновление данных и т.д. В большинстве языков программирования и фреймворков это может только ухудшить обработку данных.
Вы можете определить поле и указать параметр source=…, чтобы указать, откуда извлекать данные:
class UnitSerializer(serializers.ModelSerializer):
locals().update({
'km/h': serializers.FloatField(source='kmh', allow_null=True)
})
class Meta:
model = Unit
fields = ['km/h']