Django-carton使用两种产品型号

时间:2016-11-23 08:01:52

标签: django django-rest-framework

我正在使用Django-carton(https://github.com/lazybird/django-carton),我想知道是否可以将多个模型关联为产品模型。

现在,我有一个基类产品,我注册为我的产品型号,并从中继承了 Pub Restaurant 。我面临的问题是,cart.show()基本上返回购物车中的所有产品对象,这些产品对象只有产品属性,而不是Pub或Restaurant,我无法区分哪一个是Pub,哪一个是Pub是餐厅。

1 个答案:

答案 0 :(得分:1)

在基础模型中,您可以在没有实现的情况下定义方法get_type,在继承的类中实现它,例如:

class Product(models.Model):
    ...
    def get_type(self):
        pass
    class Meta:
        ...
        abstract = True

class Pub(Product):
    ...
    def get_type(self):
        return 'pub'

class Restaurant(Product):
    ...
    def get_type(self):
        return 'restaurant'

如果您知道实例的类型,则可以轻松访问所需的属性。

或者您只能使用isinstance内置函数:

if isinstance(obj, Pub):
    # Your logic here