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
)