假设我们有一个模型MarkPost。此模型与 Post 模型具有 ForeinKey 关系。
class Post(models.Model):
TITLE = (
('1', 'USA'),
('2', 'Europe'), )
title = models.CharField(max_length=1, choices=TITLE)
class MarkPost(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE,
related_name="marked")
例子:
foo_post = Post.objects.create(title="1")
marked_post1 = MarkPost.objects.create(user="Foo", post=foo_post)
我正在尝试编写一些信号通知,如果另一个 Post 实例的值是 marked_post1.post.title ,则通知 marked_post1 中的相关用户。我做了一个为此目的的信号函数。
信号.py
def created_post(sender, instance, created, **kwargs):
marked = MarkPost.objects.get(pk=1)
marked_title = marked.post.title
if created and instance.title == marked_title :
#logic of my code
print(" new post made ")
post_save.connect(created_post, sender=Post)
这将适用于一个实例,但如何以通用方式为标记帖子的每个用户执行此操作?
最佳答案
假设您在 MarkPost
的 id 计算背后有一个定义的逻辑,
def logic_to_find_markpost_id(req_data):
# do stuff to find MarkPost's id
return markpost_id
def created_post(sender, instance, created, **kwargs):
markpost_id = logic_to_find_markpost_id(req_data)
marked = MarkPost.objects.get(pk=markpost_id)
marked_title = marked.post.title
if created and instance.title == marked_title:
# logic of your code
print(" new post made ")
post_save.connect(created_post, sender=Post)
关于python - 用 Django 信号通知用户 _ Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48404705/