我本质上是想提出自己的继承方案,因为 Django 的继承不符合我的需要。
我希望父表(类)包含通用数据字段。
子类将在单独的表中拥有自己的附加数据。
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 视为 FooFooExtra
的字段?
我想做类似以下的事情..
foo = FooProduct.objects.create()
foo.phone = "3333" # as django does with its multiple inheritance
foo.save()
FooProduct.objects.filter(phone="3333")
我想列出不同种类的产品(数据)
我需要把它们一起列出来,所以抽象的 Base 继承就出来了
从列表中,我想将每个模型视为多态模型,在迭代 ProductBase.objects.all() 时,product.get_price() 将使用适当的类方法。(如果不需要,则无需加入)
何时且仅当我需要时,我才检索附加表数据(通过类似
.select_related('fooextra')
Django-polymorphic接近我想要的,但它的作用相当模糊,所以我害怕使用它,我认为它失败了#3。