Django: можем ли мы загрузить dict напрямую в базу данных, используя django ORM - PullRequest
0 голосов
/ 31 января 2020

У меня есть много данных, таких как {{'title':'stackoverflow'}}, где ключи похожи на имена столбцов таблицы. я хочу загрузить все данные непосредственно в базу данных, используя django ORM.

1 Ответ

0 голосов
/ 31 января 2020

Некоторые базы данных, такие как postgreSQL, имеют встроенную поддержку сложных типов, таких как списки и JSON блоки. К сожалению SQLite нет. Но мы все еще можем это сделать.

Вы захотите создать настраиваемое поле, которое сериализует и десериализует словарь как JSON для хранения и использования.

This Средняя статья дает хороший обзор и объяснение, но ту часть, которая вас интересует, я скопировал ниже

    class JSONField(Field):
        def db_type(self, connection):
            return 'text'

        def from_db_value(self, value, expression, connection):
            if value is not None:
                return self.to_python(value)
            return value

        def to_python(self, value):
            if value is not None:
                try:
                    return json.loads(value)
                except (TypeError, ValueError):
                    return value
            return value

        def get_prep_value(self, value):
            if value is not None:
                return str(json.dumps(value))
            return value

        def value_to_string(self, obj):
            return self.value_from_object(obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...