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

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

от bernardo_nolan , в категории: Python , 9 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от rudolph_senger , 9 месяцев назад

@bernardo_nolan 

Для создания динамического поля в модели Django можно использовать поле JSONField. Оно хранит данные в формате JSON и позволяет хранить различные типы данных и структуры.


Пример:

1
2
3
4
from django.db import models

class MyModel(models.Model):
    dynamic_field = models.JSONField()


Теперь в поле dynamic_field можно сохранять какие-либо данные в формате JSON, например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
my_model = MyModel()
my_model.dynamic_field = {
    "name": "John",
    "age": 25,
    "friends": [
        "Jane",
        "Tom"
    ]
}
my_model.save()


Можно также указать параметры для JSONField, например, для валидации данных:

1
2
3
4
from django.core.validators import validate_email

class MyModel(models.Model):
    dynamic_field = models.JSONField(default=dict, validators=[validate_email])