Контекст
У меня есть следующие модели:
# carts/models.py
class Cart(models.Model):
# Used to determine card type when inheriting. See example.
content_type = models.ForeignKey(ContentType)
class SingleProductCart(Cart):
"""Regular cart with single product."""
@property
def product(self):
pass
# orders/models.py
class Order(models.Model):
# Has to work with any Cart subclass.
cart = models.ForeignKey(to='carts.Cart')
Итак, я наткнулся на следующий код:
def do_something_with_single_product_order(order):
# We assume there that order.cart is a SingleProductCart instance.
assert order.content_type.model_class() == SingleProductCart # True
do_something_with_product(order.cart.product) # Attribute error.
Что вызывает исключение, потому что атрибут order.cart
относится к экземпляру модели корзины
вместо SingleProductCart и не имеет атрибута product
.
Вопрос
Как я могу привести экземпляры модели Cart к SingleProductCart без дополнительных запросов к базе данных или как организовать мои модели, чтобы они возвращали объект правильного класса?