Django сохраняет порядок следования товаров при отображении
Предположим, я хочу, чтобы порядок товаров в моем веб-магазине Django отображался в определенном порядке. Как я могу этого добиться? Я упростил приведенный ниже пример, чтобы показать проблемы, с которыми я сталкиваюсь. В моделях моего интернет-магазина у меня есть 2 модели.
class TakeawayWebshop(models.Model):
name = models.CharField(max_length = 255, help_text = 'name of takeaway restaurant')
products = models.ManyToManyField(Product)
class Product(models.Model):
name = models.CharField(max_length = 50, unique=True)
description = models.TextField()
price = models.DecimalField(max_digits=9, decimal_places=0, default=0.00)
class Meta:
ordering = ['-created_at']
В файле admin.py у меня есть
class TakeawayWebshopAdmin(admin.ModelAdmin):
form = TakeawayWebshopAdminForm
list_display = ['name']
ordering = ['name']
filter_horizontal = ('products',)
admin.site.register(TakeawayWebshop, TakeawayWebshopAdmin)
Теперь из админки я добавляю 3 товара в exact товар A, товар B и товар C в вебшоп с помощью filter_horizontal.
. После сохранения объекта модели TakeawayWebshop продукты в поле filter_horizontal автоматически переставляются местами, так что порядок становится таким: продукт C, продукт B и продукт A.
Когда из views.py если я получаю список всех продуктов, которые я добавил в веб-магазин, например
webshop = TakeawayWebshop.objects.filter(name = 'my webshop name')[0]
products = webshop.products.all()
Возвращенный набор запросов:
<QuerySet [<Product: Product C>, <Product: Product B>, <Product: Product A>]>
Очевидно, я использую неправильную стратегию, пытаясь заставить продукты в наборе запросов отображаться в том порядке, в котором я изначально планировал их расположить (продукт A, продукт B и продукт C) при вставке их в поле filter_horizontal. Как я должен решить эту проблему?