3

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

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 模型的 animal 字段将成为 Cat 或 Dog 模型的外键,具体取决于 isCat 的值。我怎样才能做到这一点?

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

4

3 回答 3

3

您应该看到通用关系

于 2012-06-20T15:24:00.120 回答
2

通用关系是一个直接的答案。

于 2012-06-20T15:24:04.653 回答
0

这个用例的另一个选择是:django-polymorphic :)

于 2020-01-04T20:55:14.363 回答