Django: как сделать группировку по полю, которое является индексированным varchar?

У меня есть модель Product следующего вида:

class Product(models.Model):
    manufacturer = models.CharField(max_length=32, null=True, blank=True)
    product_model = models.CharField(max_length=32, null=True, blank=True)
    description = models.CharField(max_length=32, null=True, blank=True)

Поле manufacturer не является первичным ключом, но это индекс. Я хочу сделать запрос, который группирует все продукты по manufacturer.

Что-то вроде: Product.objects.all().group_by(manufacturer).

(Это для использования в Django Rest Framework, где я должен вернуть массив manufacturer и для каждого manufacturer массив всех Product из manufacturer).

Как бы вы поступили?

Почему бы не использовать 2 разные модели? Одну для производителя, другую для продукта и связать их с помощью ForeignKey.

class Manufacturer(models.Model):
    name = models.CharField(max_length=32)
    ...

class Product(models.Model):
    manufacturer = models.ForeignKey('Manufacturer',
                                     related_name='products',
                                     on_delete=models.CASCADE)
    ...

manufacturer = Manufacturer.objects.first()

manufactorer.products.all()  # Gives you all products for that specific manufacturer
Вернуться на верх