Я пытаюсь изменить реализацию модели EAV, используя JSONField для хранения всех атрибутов, определенных attribute_set.Я уже выяснил, как создать форму для редактирования отдельных атрибутов JSON, но в настоящее время я застрял в реализации создания нового объекта.Я думаю, что мне нужно разделить создание объекта в два этапа, потому что мне нужно знать attribute_set для генерации правильной формы, но я не знаю, есть ли способ подключить действие create или любой другой способ достичь того, что яneed.
Мои модели выглядят так:
class EavAttribute(models.Model):
entity_type = models.CharField(max_length=25, choices=entity_types)
code = models.CharField(max_length=30)
name = models.CharField(max_length=50)
data_type = models.CharField(max_length=30, choices=data_types)
class AttributeSet(models.Model):
name = models.CharField(max_length=25)
attributes = models.ManyToManyField('EavAttribute')
class EntityAbstract(models.Model):
attribute_set = models.ForeignKey(
'AttributeSet',
blank=False,
null=False,
unique=False,
)
class Meta:
abstract = True
class Event(EntityAbstract):
entity_type = models.CharField(max_length=20, null=False, choices=entity_types, default=DEFAULT_ENTITY_TYPE)
code = models.CharField(max_length=25, null=True, blank=True, db_index=True)
year = models.IntegerField(db_index=True)
begin_date = models.DateField()
end_date = models.DateField()
data = JSONField()
Как я могу сначала выбрать AttributeSet, а затем перейти к другой форме, которую я заполнил бы атрибутами в выбранном наборе атрибутов?