У меня есть вопрос о том, как динамически устанавливать атрибуты модели при запуске экземпляров модели.
Я использую простую модель с собственным JSONField PostgreSQL:
from django.db import models
from django.contrib.postgres.fields import JSONField
class Booking(models.Model):
data = JSONField(blank=False, encoder=DjangoJSONEncoder)
Есть ли способ установить атрибуты экземпляра модели на основе значений, хранящихся в поле «данные» при создании экземпляра модели?
Я хочу иметь возможность сделать это:
from .models import Booking
b = Booking.objects.create(data={'foo':'bar'})
b.foo # this should yield 'bar'
Моей первоначальной мыслью было переопределить метод init модели и установить атрибуты экземпляра с помощью setattr(), но переопределение метода init модели настоятельно не рекомендуется в документации Django.
Есть ли другой способ добиться этого? Любая помощь приветствуется.
PS: я знаю, что могу получить доступ к значениям, хранящимся в «данных» экземпляра модели, например так: booking.data['foo'], так что это не то, что я ищу.