Django自定义ManyRelatedManager用于多记录继承

时间:2014-09-03 14:01:38

标签: python django inheritance

我有以下对象结构:

class Car(models.Model):
    name = models.CharField(max_length=16)

class Person(models.Model):
    name = models.CharField(max_length=32)
    cars = models.ManyToManyField(Car, through='Relationship')
    parent = models.ForeignKey('self', null=True, blank=True, related_name='childrens')

class Relationship(models.Model):
    car = models.ForeignKey(Car)
    person = models.ForeignKey(Person)
    love = models.BooleanField(_('love status'), default=True, db_index=True)

模型的逻辑是:

  • 可能有另一个(例如,儿童,例如' self'上的外国人)。
  • 汽车(许多相关经理)应该返回当前相关人员的汽车+汽车,他的父亲(如果存在)有(继承)。
  • 孩子无法添加给自己的汽车,他的父亲已经拥有(继承)。
  • relationship_set 经理应该按照汽车经理的相同逻辑工作(如果父亲爱他的车,那么孩子也应该喜欢它。

此逻辑看起来像继承。我无法通过Multi-table inheritance实现此逻辑,因为孩子可能还有其他孩子。也许有一些想法,如多记录继承?

0 个答案:

没有答案