多对多字段保存到数据库后调用 post_save
Posted
技术标签:
【中文标题】多对多字段保存到数据库后调用 post_save【英文标题】:Call post_save after many to many fields are saved in database 【发布时间】:2018-06-11 10:12:06 【问题描述】:我有模特
class UserPermission(models.Model):
user = models.OneToOneField(User)
user_type = models.ManyToManyField(UserType)
persona = models.ManyToManyField(Persona)
并发布保存信号
@receiver(post_save, sender=UserPermission)
def post_save_user_permissions(sender, instance, **kwargs)
"""
Depending on selected UserType and Persona for a user, Update some other model
"""
pass
我想要保存后信号中两个 m2m 字段的所有更新值。但这里的问题是在将 m2m 字段保存到 db 之前调用了 post save 信号。
我可以使用 m2m_changed 信号,但是有两个 m2m 字段,我无法关联或链接这两个信号
一旦模型中的所有 m2m 字段都保存到数据库中,是否仍然调用 post_save。
【问题讨论】:
如果您找到解决此问题的方法,您可以发布答案吗? 【参考方案1】:两种可能:
在UserType
上尝试 post_save
尝试使用through
命名中间表,如through='UserPermissionType'
并尝试UserPermissionType
上的post_save
我希望我给了你足够的线索来找到解决方案。
【讨论】:
是的,如果只有一个 m2m 字段,但我在 UserPermission 模型中有两个 m2m 字段。我想在这些 m2m 字段保存到数据库后做一些事情。以上是关于多对多字段保存到数据库后调用 post_save的主要内容,如果未能解决你的问题,请参考以下文章