Ich muss ein Modell von einer Drittanbieter-App (django-oscar
).
Wenn ich das tue
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 wird denken, dass es sich um eine Multi-Table-Vererbung handelt NewCategory
ist ein Kindermodell für Category
. Dies führt zu Fehlern wie
OperationalError at /api/categories/
no such column: catalogue_category.category_ptr_id
Ich kann damit davonkommen
def product_count(self):
return self.product_set.all().count()
Category.product_count = product_count
aber das scheint nicht nett zu sein, und ich kann keine hinzufügen @property
Dekorateur auf diese Weise.
Gibt es einen saubereren Weg, dies zu tun?
Antworten:
1 für die Antwort № 1Du brauchst ein Proxy-Modell.
class NewCategory(Category):
class Meta:
proxy = True
...