Когда вы вызываете Model.delete()
, он удалит строку из базы данных, однако это не удалит ваш текущий экземпляр из памяти.В этом случае get_another_url
работает, потому что вы все равно можете получить доступ к атрибутам, которые были кэшированы в экземпляре.
Если вы должны были получить экземпляр из QuerySet, который использовал .only(...)
или .defer(...)
(что задерживает извлечение полей более ленивым способом, а не все поля в модели, которые извлекаются сразу), тогда вы, скорее всего, столкнетесь с некоторой ошибкой при попытке извлечь оставшиеся поля избаза данных.
queryset = QuerySet.objects.filter().only("one_field") # Will only retrieve id and one_field column from database
instance = queryset.first()
instance.delete()
instance.another_field # Raises DatabaseError