Уведомления

Группа в Telegram: @pythonsu

#1 Март 24, 2018 19:42:59

ndkato
Зарегистрирован: 2018-03-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Django-сигнал / Sqlite-триггер при удалении пользователя.

Здравствуйте! Помогите с созданием сабжа.
На сайте есть комментарии. Соответственно, используется таблица User из стандартного Auth + есть таблица “Комментарии” в БД:

 class Comments(models.Model):
    UserID = models.ForeignKey(User, on_delete=models.CASCADE, default=0)
    CommentsText = models.TextField("Комментарий")
    LibraryID = models.ForeignKey(Library, on_delete=models.CASCADE, default=0) # Ссылка на библиотеку
    AddDate = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.CommentsText
Допустим, человек оставил несколько комментариев, а затем я хочу удалить его профиль через админку. Нужно сделать так, чтобы его комментарии не стирались вместе с ним, а переходили к специально созданному пользователю с именем “Удалённый_пользователь” и условным id=999.

Прошу помощи в любом виде!

Отредактировано ndkato (Март 24, 2018 19:55:35)

Офлайн

#2 Март 24, 2018 20:33:33

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Django-сигнал / Sqlite-триггер при удалении пользователя.

Сигнал pre_delete на таблицу где хранятся аккаунты пользователей . В нем берем комментарии и приписываем другому юзеру.

Офлайн

#3 Март 24, 2018 20:39:27

ndkato
Зарегистрирован: 2018-03-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Django-сигнал / Sqlite-триггер при удалении пользователя.

VadimK
Сигнал pre_delete на таблицу где хранятся аккаунты пользователей . В нем берем комментарии и приписываем другому юзеру.
Спасибо! А куда всё это дело прописывать? И “берём” — через SQL запрос? “Приписываем” — обычный UPDATE?
Был бы очень рад примеру кода.

Отредактировано ndkato (Март 24, 2018 20:39:58)

Офлайн

#4 Март 25, 2018 01:50:11

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Django-сигнал / Sqlite-триггер при удалении пользователя.

По поводу сигналов, я бы обратился к документации django той версии, что используется.
А по поводу SQL - то легче все таки с ORM.

 trash_user_id = 999
Comments.object.filter(UserID=instance.id).update(UserID_id=trash_user_id)

Как то так. При это в pre_delete сигнале instance.id - это id профайла юзера, который будет удален.
Так что теперь осталось со всего этого собрать рабочий код

Офлайн

#5 Март 25, 2018 12:00:05

ndkato
Зарегистрирован: 2018-03-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Django-сигнал / Sqlite-триггер при удалении пользователя.

Большое спасибо за помощь!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version