Django API переименование столбца Model из существующей БД

У меня есть колонка ag_id и я хочу показать ее как foo_ag_id на возврате из конечной точки.

class Foos(models.Model):
    ag_id = models.ForeignKey('Bars', on_delete=models.CASCADE, db_column='bars_ag_id')

    class Meta:
        managed = False
        db_table = 'foos'

Я не могу изменить имя столбца непосредственно в БД (внешнее).
FROM:

{
        "ag_id": 1,
    },

TO:

{
        "foo_ag_id": 1,
    },

Поскольку у вас есть API, у вас должны быть сериализаторы. В случае, если это так, вы можете использовать serializers.SerializerMethodField:

class FoosSerializer(serializers.ModelSerializer):
    foo_ag_id= serializers.SerializerMethodField('get_alternate_name')

    class Meta:
        model = Foos
        fields = ('foo_ag_id')

    def get_alternate_name(self, obj):
        return obj.ag_id

В противном случае вы можете использовать serializers.CharField с атрибутом source:

class FoosSerializer(serializers.ModelSerializer):
    ag_id = serializers.CharField(source='foo_ag_id')

    class Meta:
        model = Foos
        fields = ('ag_id')

В случае, если ничего из этого не работает, вы всегда можете изменить имя полей на foo_ag_id и повторно выполнить python manage.py makemigrations и python manage.py migrate

Вернуться на верх