Python中文
首页
教程
问答
标签
搜索
登录
注册
保存后信号与关系
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我应用post_save信号来应用每个对象的用户权限,然后相应地过滤查询集。在</p> <p>我的模型是这样的:</p> <pre><code>class Project(models.Model): # Relations with other entities. employees = models.ManyToManyField('staff.Person', through='project.PersonProjectMembership', related_name='projects') research_groups = models.ManyToManyField('group.Group', related_name='projects', through='project.ProjectGroupMembership') departments = models.ManyToManyField('department.Department', related_name='projects', through='project.ProjectDepartmentMembership') </code></pre> <p>问题是:当我捕捉到保存后的信号时,虽然我已经为部门、研究小组和员工输入了值,但它们似乎总是空的。我有什么遗漏吗?在</p> <p>更新:在当前代码下面,它尚未按预期工作。我已经更改了m2m的后保存。在</p> ^{pr2}$ <p>解决方案</p> <p>在我的项目模型中,我明确地将PersonProjectMembership定义为m2m关系员工中的中间模型:</p> <pre><code>class Project(models.Model): # Relations with other entities. employees = models.ManyToManyField('staff.Person', through='project.PersonProjectMembership', related_name='projects') </code></pre> <p>保存项目时的时间线如下:</p> <ol> <li>在项目.保存()</li> <li>每sonProjectMembership.save()</li> </ol> <p>所以很正常Project.post_保存员工仍然是空的。我要做的就是听PersonProjectMembership post_save信号:</p> <pre><code>@receiver(post_save, sender=PersonProjectMembership) def my_listener(**kwargs): # do stuff [...] </code></pre> <p>查看<a href="https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ManyToManyField.through" rel="nofollow">https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ManyToManyField.through</a>和{a2}</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在对我的代码进行了大量的挖掘和简单的测试之后,我按照克拉斯诺佩罗夫的建议尝试了m2m_的改变信号。我意识到,如果您显式地声明一个“through”模型(在我的例子中是“PersonProjectMembership”),这个信号就不能很好地工作。在</p> <p>然后我又想了想,把我的方法与“PersonProjectMembership”的post_save信号联系起来。那很好用。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
4 回答
我想从用户导入值,为此
2 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
3 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
7 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
4 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
6 回答
我想从第一个空lin开始解析文本文件
6 回答
我想从简历、简历中提取特定部分
4 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
4 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
2 回答
我想从网上搜集一些关于抵押贷款的数据
4 回答
我想从网站上删除电子邮件地址
9 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
6 回答
我想从网站中提取数据,然后将其显示在我的网页上
3 回答
我想从网页上提取统计数据。
7 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
5 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
7 回答
我想从课堂上打印字典里的键
5 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
10 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
2 回答