Djangoの継承は私のニーズに合っていないので、私は本質的に私自身の継承スキームを考え出しています。Django、OneToOne関連のフィールドを自分のフィールドとして扱います
私は親テーブル(クラス)の共通データフィールドを保持したいと思います。
サブクラスは別のテーブルに独自の追加データを持ちます。
class ProductBase(models.Model):
common = models.IntegerField()
def get_price(self):
return some_price
class FooProduct(ProductBase):
# no field because I'm proxy
class Meta:
proxy = True
def get_price(self):
return price_using_different_logic
class FooExtra(models.Model):
base = models.OneToOneField(ProductBase, primary_key=True)
phone = models.CharField(max_length=10)
私の質問は、fooがFooExtra
のフィールドを持っているかのように扱うことができるだろう、とは?
...
foo = FooProduct.objects.create()
foo.phone = "3333" # as django does with its multiple inheritance
foo.save()
FooProduct.objects.filter(phone="3333")
私は別の種類の製品を一覧表示したい(データ)ので、私はそれらを一緒にリストする必要があり
、抽象基底継承が外されている
リストから、ProductBase.objects.all()を反復処理するときに、各モデルをポリモーフィックモデルとして扱いたいと思います。product.get_price()は適切なclaを使用しますsseの方法。
と私がしたい場合にのみ、私は
.select_related('fooextra')
Django-polymorphicのようなもので(addtionalのテーブルデータを取得するには、私が欲しいものに近い(発生させずにする必要がない場合は参加)が、 Djangoの標準の継承に別の何かをしたいように、それはむしろ、それは私がそれを使用して怖いんし、私はそれが#3を失敗した何を考えて不明瞭である。
Djangoのデフォルトのモデル継承は、あなたにとってうまくいかないのはどういう意味ですか? – Ben
@Ben:問題に対処するために質問を編集しました。 – eugene