代码之家  ›  专栏  ›  技术社区  ›  4SadMemeXD

无法在Django中选择相关类别

  •  1
  • 4SadMemeXD  · 技术社区  · 2 年前

    我有2个带有定制ProductManager的型号

    class ProductManager(models.Manager):
        def get_queryset(self):
            return super(ProductManager, self).get_queryset().filter(is_active=True)
    
    class InnerCategory(models.Model):
        name = models.CharField(max_length=100)
        slug = models.SlugField(unique=True)
    
    class Product(models.Model):
        name = models.CharField(max_length=70)
        category = models.ForeignKey(InnerCategory, null=True, on_delete=models.SET_NULL)
        slug = models.SlugField(unique=True)
        is_active = models.BooleanField(default=False)
        objects = models.Manager()
        products = ProductManager()
    

    所以我试图获取产品查询集并选择相关类别,如

    queryset = Product.products.filter(
                category__slug=self.kwargs['category_slug']
                ).select_related('category')
    
    print(queryset.category)
    

    当我试着运行这个页面时,我得到了一个错误

    那么,如何在一个查询中获得所有产品和类别呢

    1 回复  |  直到 2 年前
        1
  •  1
  •   Sören Weber    2 年前

    您的查询似乎是正确的,将获取产品及其类别的子集。查询返回一个 QuerySet 你试图访问一个不存在的属性。

    for product in queryset:
        print(f'{product.name} - {product.category.name}')