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