@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
.