XMLデータをDjangoモデルにインポートする作業を進めています。以下のDjangoのモデルを投入するためにDjangoでネストされたXML要素をモデリングする
<family surname="Jones">
<person name="Bob" />
</family>
:たとえば、私は、次のXMLを使用することができ
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では、「条件」と「トリガー」の概念があります。トリガーが「条件タイプが」condition
要素またはあるcondition
要素(すなわちand
又はor
)の基を含有元素のいずれかを意味する一つの条件型要素を有していてもよい
<trigger>
<condition ... />
<action>Do something</action>
</trigger>
:例えば「すべての条件が評価された場合」または「条件の一部が評価された場合」として読み取られます。各「条件グループ」は、1つ以上の条件タイプ要素を含むことができる。もっと複雑な例を次に示します:
<trigger>
<and>
<condition />
<or>
<condition />
<condition />
<and>
<condition />
<condition />
</and>
</or>
</and>
<action>Do something</action>
</trigger>
私はDjangoでこれをモデル化する最良の方法を理解できません。理想的には私は、複数のConditionType
のモデルにリンクする(Condition
またはConditionGroup
のいずれかになります)抽象ConditionType
モデルにリンクするTrigger
モデル、およびConditionGroup
モデル(ただしCondition
モデル)をしたいと思います。
私はDjangoモデルを新しく使っています。私はモデルの継承に関するドキュメンテーションを読みましたが、これほど複雑なモデルをどのようにモデル化するのかまだ分かりません。誰にもアイデアはありますか?
'trigger'、' condition'を、 'action' XMLは、すなわち、イベントの論理チェーンをモデル化することになっています。 '条件が成立すれば、 'action'を実行する必要があります。これをモデル化する別の方法を提案できる場合は、先に進んでください。 –
私は 'Trigger'と' ConditionGroup'の両方が継承し、 'Condition'と' ConditionGroup'の両方のリンクを持って 'ForeignKey'を使って' ConditionContainer'に戻る抽象モデル 'ConditionContainer'を考えています。フィールド。 残念ながら、 'ForeignKey'を抽象モデルにリンクすることはできないので、これは不可能です。 –
@JoelCross:具体的なクラスとしてConditionContainerを使用できます。 – Marcin