Как получить требуемый ответ от DRF

У меня есть база данных, которая состоит из конфигурации приложения. Приложение может иметь различные ключи конфигурации, и в основном у меня нет информации о том, сколько ключей у меня есть, и имена ключей тоже неизвестны. Мне нужно иметь ответ в виде {key: value, }. Но у меня есть ответ {key_field: key, value_field: value}. Что мне делать в этом случае? Поможет ли мне использование MongoDB вместо PostgreSQL или SQlite? Или есть другие идеи?

Модель выглядит следующим образом:

class ServiceKey(models.Model):
    service = models.ForeignKey(
        Service,
        on_delete=models.CASCADE
    )
    service_key = models.TextField()
    service_value = models.TextField()

на вашем сериализаторе вы должны переписать метод to_representation, например:

class ServiceSerializer(serializers.ModelSerializer):
    class Meta:
        model = Ticket
        fields = [
            "name",
            "version",
        ]

    def to_representation(self, instance):
        response = super().to_representation(instance)
        response["keys"] = {
        key.service_key: key.service_value for key in instance.service_key_set.all()
        }
        return response

и просто используйте этот сериализатор в вашем представлении API

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