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