Я пытаюсь отсортировать (упорядочить) по статистическим данным, хранящимся в связи ManyToOne.Предположим, у меня есть следующий код:
class Product(models.Model):
info = ...
data = models.IntegerField(default=0.0)
class Customer(models.Model):
info = ...
purchases = models.ManyToManyField(Product, related_name='customers', blank=True)
class ProductStats(models.Model):
ALL = 0
YOUNG = 1
OLD = 2
TYPE = ((ALL, 'All'), (YOUNG, 'Young'), (OLD, 'Old'),)
stats_type = models.SmallIntegerField(choices=TYPE)
product = models.ForeignKey(Product, related_name='stats', on_delete=models.CASCADE)
data = models.FloatField(default=0.0)
Затем я бы хотел отсортировать товары по их статистике для демографических данных ALL (предположим, что у каждого продукта есть статистика, связанная с ним для ALL).Это может выглядеть примерно так:
products = Product.objects.all().order_by('stats__data for stats__stats_type=0')
В настоящее время единственное решение, о котором я могу подумать, - это либо создать новый класс статистики только для всех и использовать OneToOneField for Product.Или добавьте OneToOneField for Product, указывающий на ВСЕ статистические данные в ProductStats.
Спасибо за вашу помощь.