嗨,我想通过它的蛞蝓得到咖啡店的所有项目.因为很明显,它保存了pk不是模型中的蛞蝓.有没有什么方法可以得到这个,而不是找到咖啡馆pk等.我正在寻找一些东西,就像只是一个查询它.这里是我编码:
网址
path(
"<str:cafe_slug>/",
ProfileList.as_view(),
name="get_item_menu",
),
查看
def get(self, request,cafe_slug):
queryset = Item.objects.filter(cafe__slug=cafe_slug)
型号
class Item(models.Model):
name = models.CharField(max_length=256, unique=True,)
cafe = models.ForeignKey(CoffeeShop, on_delete=models.CASCADE)
class CoffeeShop(models.Model):
name = models.CharField(max_length=256, unique=True)
slug = models.CharField(max_length=256, unique=True,)
1条答案
按热度按时间kq0g1dla1#
您可以通过相关名称从
coffeeshop
跟随到相关项。您没有在Item上指定related_name
,因此Django默认值为item_set
。因此,我认为您需要item_set
接受Item
上的查询集接受的所有方法。我个人不喜欢default related_name,总是在
Item.cafe
上显式地编码related_name="..."
如果您只需要项目,不需要coffee_shop示例,但知道标识coffee_shop的slug,那么视图中的查询是正确的。
可以使用
prefetch_related
来获取与coffee_shop示例相关的所有项,但如果查看SQL,则在该级别上仍然是两个查询