/ / django - podtrieda modelu len na pridanie nových metód - python, django

django - podtrieda modelu len na pridanie nových metód - python, django

Musím podtriedovať model z aplikácie tretej strany (django-oscar).

Ak to urobím

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 si bude myslieť, že je to viacdielne dedičstvo a NewCategory je model pre deti Category, Bude to mať za následok chyby, ako napr

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

Môžem to prekonať

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

Category.product_count = product_count

ale nezdá sa mi to pekné, a ja nedokážem pridať a @property dekorátorom týmto spôsobom.

Existuje čistejší spôsob, ako to urobiť?

odpovede:

1 pre odpoveď č. 1

Potrebujete a proxy model.

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

...