计算 django 多对多关系的"最近使用"



我有一个简单的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当涉及到跟踪模型的更改时包括在这里

最新更新