Eri*_*arr 1 python django django-models manytomanyfield
我目前有一组看起来类似于这个人为代码的模型:
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()
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试按照PizzaToppings ManyToMany额外字段表中指定的顺序访问披萨的浇头时会发生什么.假设披萨有奶酪和火腿,PizzaToppings数据中的order_to_add_topping分别设置为0和1:
>>> pizza = Pizza.objects.get(pk=490)
>>> pizza.toppings.all()[0].name
'Ham'
Run Code Online (Sandbox Code Playgroud)
应该说'奶酪'.我原本以为RelationManager会尊重orderingMeta类字段,但它似乎没有.所以我想不应该使用添加到比萨饼中的第一个顶部的名称pizza.toppings.all()[0].name.
应该如何访问?我的模型查询有问题,还是我的模型设置如何?
小智 7
您的模型很好,您只需查询关系,因为现在您与额外的字段有"通过"关系.在您的情况下,关系会自动创建为topping_relationship,因此您的查询应该是:
pizza.toppings.order_by('topping_relationship__order_to_add_topping')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1866 次 |
| 最近记录: |