我有一个简单的Tag模型,许多其他模型都与它有ManyToMany关系。要求能够在所有具有Tag的实体中查询/显示系统中最近使用的Tag。
我可以在Tag模型中添加一个used_at
属性,然后就可以订购了。但很明显,当其他东西引用Tag模型时,它不会被修改,所以该属性上的auto_now
对我没有帮助
如果不使用through
模型(上面可能有auto_now_add
(,也不使用触发器直接在DB中执行任何不可见的(非django(魔术,那么无论何时保存引用Tag的模型,都有一种合理的方法来更新Tag的时间戳吗?
您可以使用m2m_changed信号
来自文档:
在模型实例上更改ManyToManyField时发送。严格地一般来说,这不是一个模型信号,因为它是由ManyToManyField,但由于它补充了pre_save/postrongave和pre_delete/post_delete当涉及到跟踪模型的更改时包括在这里