Django ORM objects.get() Related Questin: Законно ли использовать .get(), как если бы это был .filter()?

Я часто вижу, что, независимо от модели, люди часто используют Model.objects.get(id=id) или .get(product_name=product_name) или .get(cart=my_cart) - но теперь я вижу часть кода, которая использует .get(), как будто это фильтр, например .get(product=product, cart=my_cart), будет ли это работать так, как задумано?

.get() используется для возврата только одной записи, в отличие от .filter(), который возвращает набор записей. Вы можете использовать столько критериев, сколько пожелаете, чтобы положительно идентифицировать эту единственную запись.

Примером может быть:

the_batman = Movie.objects.get(category = "superhero", lead__full_name="Robert Pattinson")

В данном случае любой из критериев по отдельности даст набор из множества фильмов (и, таким образом, выдаст ошибку в запросе .get()), но в комбинации они дадут только один, и поэтому все работает так, как задумано.

Вернуться на верх