私は現在、この不自然なコードに似たモデルのセットを持っています:
class Pizza(models.Model):
price = models.FloatField()
topping = models.ManyToManyField(Topping, 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 追加フィールド テーブルで指定された順序でピザのトッピングにアクセスしようとするとどうなるかということです。ピザにチーズとハムがあり、PizzaToppings データの order_to_add_topping がそれぞれ 0 と 1 に設定されているとします。
>>> pizza = Pizza.objects.get(pk=490)
>>> pizza.toppings.all()[0].name
'Ham'
それは「チーズ」と言うべきです。RelationManager は Meta クラス フィールドを尊重していると思いましたが、ordering
そうではないようです。したがって、ピザに追加された最初のトッピングの名前へのアクセスは、 で行うべきではないと思いpizza.toppings.all()[0].name
ます。
どのようにアクセスすればよいですか?問題はモデル クエリにあるのか、それともモデルの設定方法にあるのか?