对于以下型号:
class Topping(models.Model):
name = models.CharField(max_length=100)
class Pizza(models.Model):
name = models.CharField(max_length=100)
toppings = models.ManyToManyField(Toppping)
我的数据如下:
披萨和顶级餐桌连接:
^{pr2}$我想得到所有名为deluxe
的披萨id和相应的配料。我的预期结果是:
1 topping_1
1 topping_2
2 topping_3
2 topping_4
连接表是:
pizza_toppings
--------------
id
pizza_id
topping_id
下面是我想要实现的SQL等价物:
SELECT p.id, t.name
FROM pizza_toppings AS pt
INNER JOIN pizza AS p ON p.id = pt.pizza_id
INNER JOIN topping AS t ON t.id = pt.topping_id
WHERE p.name = 'deluxe'
对相应的Django Queryset有什么看法吗?如果上面的内容不够有挑战性的话,我还想按名字来排序。在
当你从上面的模型中得到一个比萨饼时,没有直接的方法可以得到一个比萨饼。你可以的
适用于所有有顶饰的披萨(如果只有一个披萨上有“豪华”字样)
^{pr2}$一旦你有了顶料。或者,您可以将披萨和配料存储在元组列表或字典中(如果没有重复的配料):
然后你就可以用字典把比萨饼拿来做配料。在
我不认为有一个干净的解决方案来解决这个问题,因为您需要两个不同模型的数据。根据您的数据结构,您可能需要使用select_related,以避免所有配料都进入数据库。为了你想要的结果,我会:
这将产生:
^{pr2}$现在有不同的方法来设置数据,使用列表、元组和字典,但是我想您已经知道了如何进行设置了。在
相关问题 更多 >
编程相关推荐