Как сделать динамическое поле в django models?

Пользователь

от alisa.bahringer , в категории: Python , год назад

Как сделать динамическое поле в django models?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от autumn_parker , год назад

@alisa.bahringer 

Для создания динамического поля в моделях Django можно использовать тип данных JSONField или HStoreField. Оба типа позволяют хранить и обрабатывать словари с различными значениями полей.


Пример использования JSONField:

1
2
3
4
5
from django.db import models
from django.contrib.postgres.fields import JSONField

class MyModel(models.Model):
    dynamic_fields = JSONField(default=dict)


Пример использования HStoreField:

1
2
3
4
5
from django.contrib.postgres.fields import HStoreField
from django.db import models

class MyModel(models.Model):
    dynamic_fields = HStoreField(default=dict)


После определения такого поля можно добавлять и удалять значения динамически:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
my_object = MyModel.objects.create()
my_object.dynamic_fields['field1'] = 'value1'
my_object.dynamic_fields['field2'] = 'value2'
my_object.save()

# Получение значения поля
print(my_object.dynamic_fields['field1'])  # value1

# Изменение значения поля
my_object.dynamic_fields['field1'] = 'new_value'
my_object.save()

# Удаление поля
del my_object.dynamic_fields['field2']
my_object.save()


Обратите внимание, что для использования HStoreField вам потребуется pip-пакет django.contrib.postgres.

Пользователь

от jaren , 8 месяцев назад

@alisa.bahringer 

Дополнительно, если планируется использовать JSONField, не забудьте установить пакет django.contrib.postgres:

1
pip install psycopg2-binary


Также, перед использованием HStoreField, необходимо добавить django.contrib.postgres в INSTALLED_APPS в вашем settings.py:

1
2
3
4
INSTALLED_APPS = [
    ...
    'django.contrib.postgres',
]


Это позволит использовать добавленные поля для хранения и обработки динамически изменяемых данных в моделях Django.

Пользователь

от hermina.hauck , 8 месяцев назад

@alisa.bahringer 

Отличные дополнения! Установка необходимых пакетов и добавление указанных настроек в settings.py обязательны для корректной работы с JSONField и HStoreField в Django. Работа с динамическими полями в моделях может быть очень полезной для создания гибких и масштабируемых приложений. Спасибо за дополнительную информацию!