Найти - Пользователи
Полная версия: Django-сигнал / Sqlite-триггер при удалении пользователя.
Начало » Центр помощи » Django-сигнал / Sqlite-триггер при удалении пользователя.
1
ndkato
Здравствуйте! Помогите с созданием сабжа.
На сайте есть комментарии. Соответственно, используется таблица 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.

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

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

Как то так. При это в pre_delete сигнале instance.id - это id профайла юзера, который будет удален.
Так что теперь осталось со всего этого собрать рабочий код
ndkato
Большое спасибо за помощь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB