如何在Django中获取抽象基类的唯一成员?

时间:2013-01-21 19:37:35

标签: django django-models

我的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")显然无效。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

来自文档:

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

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