Imager または ImagerB に追加のフィールドがないと仮定すると、プロキシ モデルを使用できます。
これにより、基本クラス用に 1 つの db テーブルを保持し、Imager と ImagerB にデータを共有させることができます。実際には、適切なオブジェクト指向の継承のように機能します。問題は、子クラスに追加のフィールドを設定できないことです。ただし、少し柔軟性がある場合は、基本クラスでフィールドをオプションにしてから、子でフィールドを必須または非表示にすることができます。
アップデート
次のコードを機能させることはまだできていませんが、いくつかのアイデアが得られるかもしれません。
class TheImage(models.Model):
create_time = models.DateTimeField()
field2 = models.CharField(max_length=64, blank=True, null=True)
field3 = models.TextField(blank=True, null=True)
class Imager(TheImage):
class Meta:
proxy = True
def __init__(self, *args, **kwargs):
for f in self._meta.fields:
if f.name == 'field2':
f.editable = False
if f.name == 'field3':
f.blank = False:
super(Imager, self).__init__(*args, **kwargs)
class ImagerB(TheImage):
class Meta:
proxy = True
def __init__(self, *args, **kwargs):
for f in self._meta.fields:
if f.name == 'field3':
f.editable = False
if f.name == 'field2':
f.blank = False:
super(ImagerB, self).__init__(*args, **kwargs)