Как получить требуемый ответ от 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