Я работаю над импортом данных XML в модели Django. Например, я мог бы использовать следующий XML:
<family surname="Jones">
<person name="Bob" />
</family>
для заполнения следующих моделей Django:
class Family(models.Model):
surname = models.CharField(max_length=255)
class Person(models.Model):
family = models.ForeignKey(Family, related_name="people")
name = models.CharField(max_length=255)
В XML есть понятие «триггеры» с «условиями». Например:
<trigger>
<condition ... />
<action>Do something</action>
</trigger>
Триггер может иметь один элемент типа условия, где «тип условия» означает либо элемент condition
, либо элемент, содержащий группу элементов condition
(т. Е. and
или or
), которые должны читаться как «если все условия оценивают» или «если некоторые из условий оценивают». Каждая «группа условий» может, в свою очередь, содержать один или несколько элементов типа условия. Ниже приведен более сложный пример:
<trigger>
<and>
<condition />
<or>
<condition />
<condition />
<and>
<condition />
<condition />
</and>
</or>
</and>
<action>Do something</action>
</trigger>
Я не могу придумать лучший способ смоделировать это с Джанго. В идеале я хотел бы, чтобы модель Trigger
ссылалась на абстрактную модель ConditionType
(которая может быть Condition
или ConditionGroup
) и модель ConditionGroup
(но не модель Condition
) для ссылки на несколько ConditionType
моделей.
Я довольно новичок в моделях Django. Я прочитал документацию, касающуюся наследования моделей, но все еще не могу понять, как моделировать что-то настолько сложное, как это. У кого-нибудь есть идеи?