В настоящее время у меня есть набор моделей, похожих на этот придуманный код:
class Pizza(models.Model):
price = models.FloatField()
topping = models.ManyToManyField(RouteGate, through="PizzaToppings")
class Topping(models.Model):
name = models.CharField(max_length=50)
class PizzaToppings(models.Model):
class Meta:
ordering=["order_to_add_topping"]
pizza = models.ForeignKey(Pizza)
topping = models.ForeignKey(Topping)
order_to_add_topping = models.IntegerField()
Моя проблема в том, что происходит, когда я пытаюсь получить доступ к начинкам пиццы в порядке, указанном в таблице дополнительных полей PizzaToppings ManyToMany. Предположим, что в пицце есть сыр и ветчина, с order_to_add_topping в данных PizzaToppings, равным 0 и 1 соответственно:
>>> pizza = Pizza.objects.get(pk=490)
>>> pizza.toppings.all()[0].name
'Ham'
Это должно сказать "сыр". Я бы подумал, что RelationManager будет уважать поле ordering
Meta class, но, похоже, это не так. Поэтому я думаю, что доступ к названию первой добавки, добавленной к пицце, не следует делать с pizza.toppings.all()[0].name
.
Как получить к нему доступ? Это проблема с моим запросом к модели или у меня настроены мои модели?