Django swagger api возвращает url объекта вместо читаемого имени
У меня есть модель, которая предназначена для отображения книги(элемент) на категории(тег), она отображается следующим образом на странице администрирования django.
id item_uid tag_uid
407 Food Recipe
но на странице django swagger, когда я пытаюсь получить этот mapping api с ID 407, он возвращается следующим образом:
"id": 407,
"item_uid": "http://127.0.0.1:8000/items/237/";
"tag_uid": "http://127.0.0.1:8000/tags/361/"
Как вы можете видеть, все сопоставилось правильно, но в теле ответа отобразился url объекта и его id, что не читаемо для пользователя. Мне интересно, можно ли сделать так, чтобы они выглядели следующим образом:
"id": 407,
"item_uid": "Food";
"tag_uid": "Recipe"
Спасибо!
Похоже, вы используете HyperlinkedModelSerializer вместо обычного ModelSerializer
Попробуйте изменить класс сериализатора на ModelSerializer:
class Map_item_tag_Serializer(serializers.ModelSerializer):
class Meta:
model = Map_item_tag
fields = ['id','item_uid','tag_uid']
Кроме того, я бы посоветовал вам использовать нотацию CamelCase для всех ваших классов. Например, вместо Map_item_tag_Serializer
измените имя на MapItemTagSerializer
. То же самое касается всех остальных классов.
Я бы также избегал использования суффикса _uuid
при использовании отношений ForeignKey. В модели MapItemTag
отношение ForeignKey по своей сути означает, что поле будет указывать на объект Item
объекта Tag
. Следовательно, нет необходимости снова указывать часть _uuid
.
Например, следующие изменения сделали бы модель гораздо более читабельной:
class MapItemTag(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE, verbose_name='map_item')
tag = models.ForeignKey(Tag, on_delete=models.CASCADE, verbose_name='map_tag')