0

我的 Django 模型组织如下。

class Animal(models.Model):

  first_name = models.CharField(max_length=128, unique=True)

  class Meta:
    abstract = True

class Cat(Animal):

  def meow(self):
    return "mreooooow"

class Dog(Animal):

  def bark(self):
    return "AARF!"

class EvilMonkey(Animal):

  def plot_world_takeover(self):
    return "muahahaha ..."

如您所见,每个“动物”在其自己的物种中都有一个独特的名字。如何过滤名称为“Ned”的动物?Animal.objects.filter(first_name="Ned")显然不起作用。

4

2 回答 2

2

您可能想走multi-table-inheritance的路线。这将允许您对基本模型进行查询。

于 2013-01-21T19:48:08.630 回答
1

从文档:

当您想将一些公共信息放入许多其他模型中时,抽象基类很有用。您编写基类并将 abstract=True 放在 Meta 类中。该模型将不会用于创建任何数据库表。相反,当它用作其他模型的基类时,它的字段将添加到子类的字段中。

纳撒尼尔已经提到了解决方案。

于 2013-01-21T20:20:41.153 回答