django - 继承模型只是为了添加新方法

时间:2016-10-13 18:54:17

标签: python django

我需要从第三方应用程序(django-oscar)继承模型。

如果我这样做

from oscar.apps.catalogue.models import Category

class NewCategory(Category):
    @property
    def product_count(self):
        return self.product_set.all().count()

    class Meta:
        db_table = 'catalogue_category'

Django会认为它是一个多表继承,NewCategoryCategory的子模型。这将导致错误,例如

OperationalError at /api/categories/
no such column: catalogue_category.category_ptr_id

我可以逃脱这个

def product_count(self):
    return self.product_set.all().count()

Category.product_count = product_count

但这看起来不太好,而且我无法以这种方式添加@property装饰器。

有更简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

您需要proxy model

class NewCategory(Category):
    class Meta:
        proxy = True

    ...