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ď č. 1Potrebujete a proxy model.
class NewCategory(Category):
class Meta:
proxy = True
...