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