0

我有以下(简化的)djangodjango-polymorphic模型:

class GenericOffer(PolymorphicModel):
    pass
class OfferA(GenericOffer):
    special = models.IntegerField()
class OfferB(GenericOffer):
    pass

class GenericProduct(PolymorphicModel):
    offer = models.ForeignKey(to=GenericOffer)
class ProductA(GenericProduct):
    pass
class ProductB(GenericProduct):
    pass

class Gizmo(models.Model):
    product = models.ForeignKey(to=GenericProduct)

我可以从中创建以下实例:

offer_a = OfferA()
product_a = ProductA(offer=offer_a)
gizmo_a = Gizmo(product=product_a)

我现在有:

assert product_a.offer == offer_a
assert gizmo_a.product == product_a

但:

assert gizmo_a.product_a.offer != offer_a
assert gizmo_a.product_a.offer.get_real_instance() == offer_a

也就是说,链接到 my 外键的外键Gizmo不会自动转换为正确的类型。

  • 这是预期的行为吗?

  • 我应该在我的 中使用 aGenericRelation而不是 aForeignKeyGizmo

感谢您的任何建议

4

0 回答 0