(これは、「すでに回答があるかもしれない質問」リストに基づいた一般的な質問のようですが、どれも私を助けませんでした。)
マルチテーブル継承を持つモデルがいくつかあります。
管理者 (およびその後のフロントエンド アプリ) では、基本クラス内のすべてのもののリストが必要であり、それらがどの子 (または孫) クラスに属しているかを識別することもできます。
これには継承マネージャーを使用しようとしています。これまでのところ運がありません。
class Entry(models.Model):
name = models.CharField(max_length=200)
description = models.TextField(max_length=500)
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
slug = models.SlugField(unique=True)
objects = InheritanceManager()
def get_queryset(self, request):
qs = self.model.objects.get_queryset()
ordering = self.get_ordering(request)
if ordering:
qs = qs.order_by(*ordering)
return qs
def __str__ (self):
return self.name + " entry"
class Person(Entity):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
def __str__ (self):
return self.name + " Person"
文字列「person」と「Entry」の追加は単なるテストです。
エンティティのリストはEntry
、(実際には) 人物であっても を表示するだけです。
Entry.__str__
最終的なサブクラスを表示するものに書き込めるようにしたいと思います。そうすれば、エントリのリストを取得して次のように表示できます。
Bob (Person)
ABC Co. (Organization)
Great Expectations (Book)