2016-08-14 2 views
0

おはようございます、私はGoogle翻訳を使用しているため、私の英語は申し訳ありません。値オブジェクトDjango

私は今PythonとDjangoで始まります。私のモデルの作成には疑問がありました。

  • 住所
  • アドレス(models.Model)

    ...

    人(models.Model)

    • 名前
    • :私のようなものを作成したいです
      • PublicPlace
      • 近所
      • ...です

      、複数のモデルを使用するために別々のValueObjectとしてアドレス。アドレスクラス内のデータベースフィールドでは、Peopleテーブルやその他のエンティティ(エンタープライズ、クライアント、「アドレスを持つ人」)内に永続化されます。したがって、必要な各モデルのすべてのアドレスフィールドを複製しないでください。

      私は、抽象的にメタクラスのアドレスを設定し、他のものを継承することでやりたいことがわかりました。しかし、ValueObjectsをもっとやりたいなら、これをいくつかのクラスから継承しなければならない場合は、より正確な方法があるのだろうかと思います。

      ありがとうございます。複数のアドレスを持つことができ、この多く、一人で

      class Person(models.Model): 
          LastName = models.CharField(max_length=30) 
          FirstName = models.CharField(max_length=30) 
          ... 
          address = models.ManyToManyField(Address) 
      

      、各アドレスは、複数の人を持つことができます:

    +0

    なぜ具体的なモデルとしてAddressを持ち、関係を使用するのではなく、Personなどのフィールドを永続化したいのですか? –

    +0

    この特定のケースでは、同じテーブルを離れる予定の1..1の関係になります。これらのクラスは例としてのみ使用され、別のValueObjectになることができます。私は通常.NETとDDDで作業し、Djangoでこれをどのように適用するかを知りたがっています。 –

    答えて

    1

    はあなたのような何かをしたいです。一人につき1つのアドレスしか許可しない場合は、

    address = models.ForeignKey(Address) 
    

    を入力してください。これにより、アドレスごとに複数の人が許可されます。

    +0

    私はエンティティとしてではなく、データ構造としてクラス関数を扱いたいと思います。エンティティの場合、この例では1..1の関係になります。私はValueObjects( "DDD"アーキテクチャのコンセプト)を書く方法を知りたいと思います。もう1つの例は、フィールド「電話」、「モバイル」および「電子メール」を常に持つ1つのコンタクトクラスを決定する場合です。そうすれば、Pessoa.Contato.Telefoneとなります。必ずしも別のテーブルに記録する必要はありません。 –

    関連する問題