0

我希望以特定于所选类别的方式组织类别中的产品。一个产品可以是多个类别的一部分,因此我使用多对多关系来定义它们。

我有以下 4 个模型:

class Category(MPTTModel, ModelWithMetadata, SeoModel, PublishableModel):
    name = models.CharField(max_length=512)
    ...
​
​
class Product(SeoModel, ModelWithMetadata, PublishableModel):
    name = models.CharField(max_length=512)
    category_management = models.ManyToManyField(
        Category,
        related_name="category_managed_products",
        through="OrderedCategoryManagedProduct",
        blank=True,
        verbose_name="Category Management",
    )
    ...
​
​
class OrderedCategoryManagedProduct(SortableModel):
    category = models.ForeignKey(
        Category, on_delete=models.CASCADE, related_name="cmp_products"
    )
    product = models.ForeignKey(
        Product, on_delete=models.CASCADE, related_name="cmp_categories"
    )
    added_automatically = models.BooleanField(default=False)
    
    class Meta:
        ordering = ["sort_order"]
​
    def get_ordering_queryset(self):
        return OrderedCategoryManagedProduct.objects.all()
​
​
class SortableModel(models.Model):
    sort_order = models.IntegerField(editable=False, db_index=True, null=True)
​
    class Meta:
        abstract = True
​
    def get_ordering_queryset(self):
        raise NotImplementedError("Unknown ordering queryset")
​
    ...

SortableModel 来自Saleor Legacy Views 应用程序

是否可以查询特定类别并接收其中产品的查询集(按顺序排列),sort_order而不必单独遍历所有产品?

4

0 回答 0