@DaniPy
Python

Объясните, как работают сессии в django?

Есть объект user, которому присваивается каждый раз новый хеш на момент авторизации. Для каждого объекта будет объект модели сессии, в которой хранятся хеши. Как удалить все эти хеши? Есть три задачи для примера: сделать логаут (сессия текущего браузера прекратится, а остальных браузеров, связанных с объектом user нет), изменение пароля, удаление аккаунта (тогда все сессии должны сами погаситься).

Еще левый вопрос: почему, когда я удаляю пользователя, удаляется вместе с этим объект, например, статьи,-
class Feed(models.Model):

	title = models.CharField(max_length=130, verbose_name='Заголовок статьи')
	introduce = models.CharField(max_length=235, verbose_name='Вводная часть')
	rating = models.IntegerField(default=0, verbose_name='Значение в рейтинге')
	author = models.ForeignKey(User, blank=True, null=True)

	class Meta:
		verbose_name = "Статья"
		verbose_name_plural = "Статьи"

	def __str__(self):
		delimiter = '**' if self.id % 2 != 0 else '||'
		return '№%d %s %s' % (self.id, delimiter, self.title)
  • Вопрос задан
  • 603 просмотра
Пригласить эксперта
Ответы на вопрос 1
@deliro
Отвечаю на "левый вопрос", т.к. основной я не понял:
По-умолчанию при удалении объекта, связанные объекты удаляются каскадом. Это значит, что сначала, при удалении юзера, все объекты, которые ссылались на этого юзера будут удалены, затем удалятся все объекты, которые ссылались на любой из только что удалённых объектов и так далее.

Изменить это поведение можно, передав keyword аргумент on_delete в модель:
author = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)


Подробнее про все варианты on_delete читай здесь: https://docs.djangoproject.com/en/1.10/ref/models/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы