Django ORM objects.get() 相关问题:像使用 .filter() 一样使用 .get() 是否合法?

Django ORM objects.get() Related Questin: Is it legit to use .get() as if it's .filter()?

我经常看到,不管模型如何,人们经常使用 Model.objects.get(id=id) 或 .get(product_name=product_name) 或 .get(cart= my_cart) - 但我现在看到一段使用 .get() 的代码,就像它是一个过滤器,例如 .get(product=product, cart=my_cart),这行得通吗是否符合预期?

.get() 仅用于 return 一条记录,而 .filter() return 是一组记录。您可以根据需要使用任意多的标准来确定那条记录。

例如:

the_batman = Movie.objects.get(类别 = "超级英雄", lead__full_name="罗伯特·帕丁森")

在这种情况下,单独使用任何一个标准都会产生一组多部电影(因此在 .get() 请求中出错),但组合起来它们只会产生一个,因此按预期工作。