Django REST framework ModelSerializer db_table вместо имени внешнего ключа - PullRequest
0 голосов
/ 13 июля 2020

Запуск Serializers.py дает желаемый результат. Проблема в классе ActivitiesSerializer, мне пришлось переопределить поле assay, чтобы переименовать его в assays, чтобы оно соответствовало имени таблицы db_table. Я не могу делать это вручную для каждого случая. Есть ли способ переопределить ModelSerializer по умолчанию, чтобы использовать имя db_table, а не имя поля внешнего ключа?

model.py:

class Activities(models.Model):
    activity_id = models.BigIntegerField(primary_key=True)
    assay = models.ForeignKey('Assays', models.DO_NOTHING)

    class Meta:
        managed = False
        db_table = 'activities'

class Assays(models.Model):
    assay_id = models.BigIntegerField(primary_key=True)
    doc = models.ForeignKey('Docs', models.DO_NOTHING)

    class Meta:
        managed = False
        db_table = 'assays'

Serializers.py

class AssaysSerializer(serializers.ModelSerializer):
    class Meta:
        model = Assays
        fields = '__all__'
        depth = 0

class ActivitiesSerializer(serializers.ModelSerializer):
    assays = AssaysSerializer(source='assay')
    class Meta:
        model = Activities
        fields = '__all__'
        depth = 0

ActivitiesObjectA = ActivitiesSerializer(Activities.objects.get(activity_id=17126237))
ActivitiesObjectA_JSON = JSONRenderer().render(ActivitiesObjectA.data)
print(ActivitiesObjectA_JSON)
...