Невозможно выбрать связанную категорию в Django
У меня есть 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)
и когда я пытаюсь запустить эту страницу, я получаю ошибку
AttributeError: объект 'QuerySet' не имеет атрибута 'category'
Итак, как я могу получить все мои продукты и категории в одном запросе
Ваш запрос кажется правильным и получит подмножество товаров и их категорий. Запрос возвращает набор запросов QuerySet, и вы пытались получить доступ к несуществующему атрибуту на нем.
В зависимости от того, что вы хотите сделать с вашими результатами, вы можете получить к ним доступ следующим образом:
for product in queryset:
print(f'{product.name} - {product.category.name}')