【发布时间】:2013-05-14 09:34:03
【问题描述】:
我需要在保存 Django 模型后操作数据,但我还需要访问 ManyToManyField。
这是我想做的:
class Lab(Model):
institute = ManyToManyField(Institute)
def post_save_lab(sender, instance, created, *args, **kwargs):
if not instance.institute.all():
# Data processing...
post_save.connect(post_save_lab, sender=Lab)
问题是,那个时候 instance.institute.all() 总是空的……我怎么知道实验室有没有研究所?
我指定信号 m2m_changed 不能解决问题,因为如果 ManyToMany 关系中没有元素,则必须完成我的数据处理。因此不会调用 m2m_changed。
谢谢!
【问题讨论】:
-
ForeignKey != ManyToManyField。这是一种不同类型的关系。正如@Hedde 建议的那样,您可能应该使用 m2m-changed 信号
-
只有在 create
Lab实例或更新时才会看到此行为? -
数据处理必须在更新和新对象上进行。
-
您找到解决方案了吗?