Django сигнализирует, как правильно соединить отправителя с получателем - PullRequest
0 голосов
/ 25 января 2020

Я столкнулся с проблемой при попытке поиграть с django сигналами. У меня есть проект со следующей структурой

authexample
manage.py 
posts #django app 
func.py #here is sender and receiver logic is realised 

В приложении posts. models.py я создал простую модель post

class Post(models.Model):
     title = models.CharField(max_length=30)
     body = models.CharField(max_length=50)

В моем func.py, расположенном вне приложения post, я понял, мои сигналы вызывают logi c по следующему коду

from django.db.models import models
from posts.models import Post 
from django.db.models.signals import post_save 
from django.dispatch import receiver 

#my sender function  
 def func_sender(title,body):
     a = Post(title=title,body=body)
     a.save()

 #receiver function 
 @receiver(post_save,

sender = func_sender) def func_receiver (sender, ** kwargs): print («статья была сохранена»)

чем я пытаясь создать тестовую статью для этих целей, я запускаю

python manage.py shell 
from func import * 
a = Post("test_title","test_body)

Когда этот код был выполнен, моя тестовая статья была создана, но я ожидаю, что после того, как статья будет создана, моя функция-получатель func_receiver выполнит и предложит мне строку внутри печать заявления. Почему этого не происходит Направь меня, пожалуйста

1 Ответ

0 голосов
/ 25 января 2020

После поиска в Google я нашел решение. Моя проблема заключалась в том, что когда я звонил получателю в аргументе ключевого слова отправителя, я указывал func_sender, но правильным способом было указать саму модель Post. И вот мое решение

@receiver(post_save,sender=Post)
 def func_receiver(sender,**kwargs):
      print("post was saved)
...