Django изменяет имя внешнего поля, обращенного к пользователю

У меня есть модель, которая будет иметь два похожих поля типа "id". Одно будет первичным ключом, другое - человекочитаемым идентификатором.

На подложке/в модели я дифференцировал их следующим образом

pk_id = models.AutoField(primary_key=True) # internal only, incrementing int
ext_id = models.CharField(max_length=128) # external facing, words+int

Когда пользователь делает запрос, чтобы получить список моделей, я хочу полностью ИСКЛЮЧИТЬ pk_id, и чтобы ext_id отображался просто под именем id. Например, так:

{
'id' : 'name_title_001' # same as ext_id
'other_fields' : 'bla bla bla'
}

Как мне этого добиться?

предположим, что имя вашей модели - SomeModel; обновите ваши сериализаторы как

class SomeModelSerializer(serializers.ModelSerializer):
    id = serializers.CharField(source='ext_id', read_only=True)
    class Meta:
        model = SomeModel
        fields = (
            'id',
            # other fields excluding pk_id and ext_id
        )
Вернуться на верх