Объект Python Pickle в модели Django - PullRequest
0 голосов

Я хотел бы знать, каков будет самый простой способ хранения объектов pickle в postgresql db с использованием Django orm. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Вы можете использовать BinaryField для хранения маринованного объекта.

Из комментариев к вопросу вы также можете использовать JSONField для хранения dict из экземпляра класса. Вы можете сделать это так:

from django.contrib.postgres.fields import JSONField

class YourModel(models.Model):
    data = <b>JSONField()</b>

Допустим, у вас есть такой класс (который вы хотите сохранить):

class YourClass(object):
    a = None
    b = None
    c = None

    def __str__(self):
        return 'Your Class: {}, {}, {}'.format(self.a, self.b, self.c)

Теперь вы можете создать словарь так:

some_instance = YourClass(a=1, b=2, c=3)
cls_dict = some_instance.__dict__
print(cls_dict)
# {'a': 1, 'b': 2, 'c': 3}

y = YourModel(data=cls_dict)
y.save()

Теперь вы можете попробовать восстановить экземпляр класса из словаря следующим образом:

y = YourModel.objects.first()
some_instance = YourClass()
some_instance.__dict__.update(y.data)

print(some_instance)

# 'Your Class: 1, 2, 3'
0 голосов
/ 30 мая 2019

Я не буду комментировать, стоит ли использовать маринованные данные в базе данных.Но вы можете использовать библиотеку django-picklefield для хранения маринованных данных:

https://pypi.org/project/django-picklefield/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...