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 に答える