Person
人に関するすべてのデータを格納するモデルがあります。Client
Person を拡張するモデルもあります。モデルを拡張する別の拡張モデルOtherPerson
がありPerson
ます。を指すクライアントを作成したいのですが、それを指すレコードもPerson
作成します。基本的に、現在のビューに応じて、 1 つのオブジェクトをおよびとして表示したいと考えています。これは Django の ORM で可能ですか、またはこのシナリオを作成するために生のクエリを何らかの方法で作成する必要がありますか? 両方の子クラスが person_ptr_id フィールドで親の Person クラスを指すだけなので、データベース側からは可能であると確信しています。OtherPerson
Person
Person
Client
OtherPerson
簡単に言えば、 をClient
(つまり を) 作成した場合、 のベースを使用してオブジェクトをPerson
作成することもできますか? そうすれば、それらをOR として表示でき、保存するとそれぞれのフィールドに影響しますか?OtherPerson
Person
Client
Client
OtherPerson
Person
「水平」ポリモーフィズム?
これが明確になる場合に備えて、私のモデルの縮小版です。
class Person(models.Model):
"""
Any person in the system will have a standard set of details, fingerprint hit details, some clearances and items due, like TB Test.
"""
first_name = models.CharField(db_index=True, max_length=64, null=True, blank=True, help_text="First Name.")
middle_name = models.CharField(db_index=True, max_length=32, null=True, blank=True, help_text="Middle Name.")
last_name = models.CharField(db_index=True, max_length=64, null=True, blank=True, help_text="Last Name.")
alias = models.CharField(db_index=True, max_length=128, null=True, blank=True, help_text="Aliases.")
.
.
<some person methods like getPrintName, getAge, etc.>
class Client(Person):
date_of_first_contact = models.DateField(null=True, blank=True)
.
.
<some client methods>
class OtherPerson(Person):
active_date = models.DateField(null=True, blank=True)
termination_date = models.DateField(null=True, blank=True)
.
.
<some other person methods>