Вот код, который строит QuerySet и печатает выход на каждом шаге (для отладки):Почему использование .latest() на пустой Django queryset return ... ничего?
qs = self.get_queryset(True)
print(qs) # [<MyModel: obj_1>, <MyModel: obj_2>, <MyModel: obj_2>, <MyModel: obj_3>]
qs = qs.get_user(user)
print(qs) # []
qs = qs.completed()
print(qs) # []
qs = qs.latest('time_completed')
print(qs) # <-- What happened? Why is this blank?
print(qs is None) # False <-- huh??
print("nothing") if not qs else print("something") # <-- blank?!?! how?!
print(type(qs)) #
Последняя операция qs.latest('time_completed')
печатает пустой, тип является пустым, если оператор игнорируется. Что тут происходит?
Пример, где результат не пустой QuerySet работает отлично (обратите внимание на все элементы одного пользователя, просто совпадение):
qs = self.get_queryset(True)
print(qs) # [<MyModel: obj_1>, <MyModel: obj_2>, <MyModel: obj_2>, <MyModel: obj_3>]
qs = qs.get_user(user)
print(qs) # [<MyModel: obj_1>, <MyModel: obj_2>, <MyModel: obj_2>, <MyModel: obj_3>]
qs = qs.completed()
print(qs) # [<MyModel: obj_1>, <MyModel: obj_2>, <MyModel: obj_2>, <MyModel: obj_3>]
qs = qs.latest('time_completed')
print(qs) # obj_1
print("nothing") if not qs else print("something") # something
print(type(qs)) # <class 'my_app.models.MyModel'>
Как вы испытали '.latest()' на пустом запросе возвращает 'None'. Итак, вы ожидали чего-то другого или каков ваш фактический вопрос? –
Что такое 'qs.get_user' и' qs.completed'? Они не являются основными методами запросов. Кроме того, код, который вы опубликовали выше, переназначает переменную 'qs', чтобы быть другими, к тому времени, когда вы пытаетесь вызвать' qs.latest'. Я не думаю, что код будет работать вообще. Вы также упоминаете оператор if в своем вопросе - я не вижу его в коде. Пожалуйста, напишите [минимальный, проверяемый, полный пример] (http://stackoverflow.com/help/mcve). – solarissmoke
@KlausD. он не возвращает None, если он не вернулся, он должен напечатать 'None', и он должен попасть в оператор if и напечатать« ничего », но он не делает ни одного из них. Я ожидал ничего, но не понял! – 43Tesseracts