1
У меня есть модель клиента с полем created_at. Я хочу обновить created_at для клиента из оболочки. Я сделал следующее:Доступ к запросу Django Queryset по индексу
>>> c = Client.objects.all()
>>> c[1].created_at
>>> # I get nothing here since it's not set yet
>>> from django.utils import timezone
>>> c[1].created_at = timezone.now()
>>> c[1].save()
>>> c[1].created_at
>>> # I still get nothing here. Even when I reload the queryset, I get nothing.
Однако, когда я делаю то же самое с c = Client.object.get(id=1)
, это работает. Почему это происходит?
Спасибо, да это работает. Почему это происходит? Я весьма озадачен. –
это потому, что объекты в Queryset не сохраняются в памяти, а запрос - просто копия объектов. Чтобы получить фактический объект (т. Е. Чтобы его можно было обновить и сохранить), вам нужно назначить его переменной в памяти – awwester
Не совсем; это потому, что каждая операция среза выполняет новый запрос к базе данных и возвращает новый объект. Поэтому первый 'c [1]' не связан с последующими. –