170 похожих чатов

Сделал вот такой сигнал: from django.contrib.auth.models import User @receiver(post_save, sender=User) def create_gamer(sender, instance,

created, **kwargs):
print("Run signal handler")
Создаю пользователя - ничего не происходит. ЧЯДНТ?

32 ответов

25 просмотров

ты же вроде писал, что юзер кастомный?

Tom-Cauf Автор вопроса

Уже нет. Отказался от этой идеи. Решил попробовать обработку на стокового повесить

вот и первые недостатки такого подхода) если серьезно: идей нет

кстати: а сигнал написан в файле models.py?

не регистрируешь сигнал? или закинь его к моделям, или импортируй в инит файл приложения, или пакета с моделями, если они отдельным пакетом

Tom-Cauf Автор вопроса

Согласно документации, можно вынести в signals.py - так и сделал

а зарегистрировал? Николай уже описал)

Tom-Cauf Автор вопроса

Ткни в доку, где про регистрацию? Что-то такого не видел.

Tom-Cauf Автор вопроса

У меня вот так - без регистрации и в signals.py - в тестовом проекте сейчас работало. А в основном не работает. Но там я делал через кастомного юзера

твой модуль signals.py просто никуда не импортится и джанго не знает что он есть. Вот сигнал и не регистрируется.

Tom-Cauf Автор вопроса

Так и в тестовом проекте тоже никуда не импортировался. Но работало. Тестовый сейчас не под рукой, жаль. Скинул бы код

я бы посоветовал отказаться от сигналов. Судя по названию, этот код можно вызвать/выполнить и в save()

Tom-Cauf Автор вопроса

Я таких способов не встречал в сети. Обычно либо полная кастомизация юзера, либо сигналы. Кастомизировать юзера ради одной доп-команды мне как-то не оч интересно

я тоже не в доке находил, а устанавливал опытным путем)

Tom-Cauf Автор вопроса

А где про регистрацию почитать?

Все что могу предложить - это сообщение) https://t.me/pydjango/499947 ну или погуглить)

https://coderoad.ru/2719038/Где-должны-жить-обработчики-сигналов-в-проекте-django#22924754 тут вроде развернуто, но я не использую сигналы и инфа могла устареть

Вот тут про регистрацию написано, но я сам не пробовал я сигналы к модели ложу обычно https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html

Tom-Cauf Автор вопроса

Чет лажа какая-то с этой регистрацией. Ничего не заработало, кроме переноса сигналов в models.py

Ну может инфа уже старая 😅, вообще думаю сигнал лучше рядом с моделью хранить так читабильность выше. А где в доке написано что их надо signals.py выносить?

нашел, поидее должно работать, регистрация в ready() https://docs.djangoproject.com/en/3.1/topics/signals/#connecting-receiver-functions

Tom-Cauf Автор вопроса

Делал так - не получилось

а как именно делал?

в apps.py совал?

Tom-Cauf Автор вопроса

Да, импортировал в там. Надо будет попробовать через connect

там вроде не импортировать нужно ) импортировать в init приложения или пакета с модулями, хотя щас вижу что в доке это бэдпрактис вроде ка

Tom-Cauf Автор вопроса

Там выше ссылку давали, где сигналы через декоратор ресивер передаются. Вот в этом случае написано, что в ready надо просто импортнуть модуль. Но не взлетело. Буду переделывать на connect - может заработает

а покажи как апка в инсталдапс подключена

Tom-Cauf Автор вопроса

Эмм... Как обычно. Просто по названию приложения. Или предлагаешь передавать туда ссылку именно на конфиг (или как оно там в альтернативном варианте?)

ну да, в этом проблема, должно быть "appname.apps.AppnameConfig"

Tom-Cauf Автор вопроса

Ага, спс. Тоже сейчас проверю

Tom-Cauf Автор вопроса

Да, все сработало при указании ссылки на объект конфига! Спасибо за помощь!

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта