我将django-polymorphic
用于多种产品类型。
class Product(PolymorphicModel):
order = models.PositiveSmallIntegerField(default=999, verbose_name='Poradie')
class WoodProduct(Product):
....
class IronProduct(Product):
....
class PlasticProduct(Product):
....
我想基于
设置默认顺序(或在过滤QuerySet
时明确指定)
1. model type
2. order attribute
我最接近的是在ordering = ['polymorphic_ctype_id']
模型的class Meta
中设置Product
。
所以现在我已经按型号对产品分组了,但是我无法设置,哪种类型将是第一,第二等...
如何确保Product.objects.all()
会按顺序返回QuerySet
-WoodProduct
,PlasticProduct
,IronProduct
s?
编辑
因此它看起来像:
class Product(...):
class Meta:
ordering = [(WoodProduct,PlasticProduct,IronProduct),'order']
答案 0 :(得分:1)
我无法测试。但是基于文档iltering-inherited-classes和combining-querysets,解决方案可以是:
query = Product.objects.instance_of(WoodProduct).order_by('order')
query |= Product.objects.instance_of(PlasticProduct).order_by('order')
query |= Product.objects.instance_of(IronProduct).order_by('order')