Вопрос о программе на python, на примере django

Я думаю, что этот вопрос касается программы python, а не того, как использовать django.

Я запутался в QuerySet, что это такое?

# 
print(Hotel.objects.all().values())

# output
<QuerySet [{'x': 1}, {'y': 2}]>
# type
print(type(Hotel.objects.all().values())

#output
<class 'django.db.models.query.QuerySet'>
# like list
print(type(Hotel.objects.all().values()[0])
#output
{'x': 1}
  1. Почему print(Hotel.objects.all().values()), это не просто возврат [{'x': 1}, {'y': 2}]?

  2. И почему он может работать как список, но type() показывает, что это не список?

  3. JsonResponse(Hotel.objects.all().values(), safe=False)) показать

    TypeError: Object of type QuerySet is not JSON serializable

    .

    Я думаю, что это как список [], так что он может быть сериализуемым.

    Но, на самом деле, он не может быть сериализуемым.

    Однако, он может работать как список. Например: все методы списка работают, также итерация.

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