У меня странное поведение, я не могу понять, почему это происходит. У меня есть простой набор запросов с отложенным полем, например Person.objects.filter(id=4).defer('phone')
, а затем у меня есть тест, который подтверждает это:
with self.assertNumQueries(2):
p = Person.objects.filter(id=4).defer('phone').first() # 1 query
p.phone # 1 query
Он терпит неудачу, потому что он, кажется, выполняет три запроса в этом блоке: первый один при фильтрации и еще два повторяющихся запроса, которые поступают из оператора p.phone
(SELECT phone FROM ...).
Кто-нибудь знает, почему это происходит?
- Примечание: я использую Django 2.0. И это также происходит с использованием
only()
, аналога defer()
.