django模型用外键给两种可能的模型之一

时间:2012-06-20 15:11:52

标签: django django-models

我有两个相似的模型,但不完全相同。这是我能提出的问题的最佳抽象。

class Cat(models.Model):
    name = models.TextField()
    breed = models.TextField()

class Dog(models.Model):
    name = models.TextField()
    color = models.TextField()

现在我需要制作另一个这样的模型。

class Pet(models.Model):
    favoriteFood = models.TextField()
    isCat = models.BooleanField()
    animal = models.ForeignKey(?????????)

我的问题是Pet模型的动物领域将成为Cat或Dog模型的外键,具体取决于isCat的值。我怎么能这样做?

现在,我知道这是一个不寻常/尴尬的架构,但我没有参与其创建,我无法改变它。我只需要支持它。我正在为现有数据库编写这些模型。

3 个答案:

答案 0 :(得分:2)

您应该看到Generic relations

答案 1 :(得分:2)

Generic relations是一个直接的答案。

答案 2 :(得分:0)

此用例的另一个选项是:django-polymorphic:)