これが私がやろうとしていることの凝縮された例です:
class Entity(models.Model):
name = models.CharField(max_length=70)
class Individual(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class BookingAgent(Entity)
staff = models.ManyToManyField(Individual, through='Role', related_name="employee")
class Role(models.Model):
person = models.ForeignKey(Individual)
company = models.ForeignKey(Entity)
position = models.CharField(max_length=70)
Entity
基本的に、住所など、会社のすべての基本情報を格納するという親クラスがあります。次にBookingAgent
、の子である がありEntity
ます。モデルでスルー リレーションシップを作成しようとすると、BookingAgent
機能しません。エラーが発生します:
「staff」は、モデル Role を介して手動で定義された m2m リレーションであり、Individual および BookingAgent への外部キーはありません
ただし、Entity` モデルでスルー リレーションシップが定義されている場合は機能します。
私の目標は、各エンティティに、従業員またはメンバーである個人のリストを持たせることです。なぜうまくいかないのか理解できたと思いますが、エレガントな解決策がわかりません。
ありがとう!
更新: 明確にするために、エンティティは、BookingAgents、ManagementCompanies などではないいくつかのエンティティがあるため、抽象基本クラスではありません。