我有一个非常通用的文章模型,与标签模型有m2m关系。我想保留每个标签使用的计数,我认为最好的方法是对标签模型上的计数字段进行非规范化,并在每次保存文章时更新它。我怎样才能做到这一点,或者有更好的方法?
答案 0 :(得分:3)
这是Django 1.2中的一项新功能: http://docs.djangoproject.com/en/dev/ref/signals/#m2m-changed
答案 1 :(得分:2)
您可以通过为M2M关系创建intermediate model并将其用作post_save
和post_delete
信号的挂钩来更新{{1}中的非规范化列来实现此目的} table。
例如,我为soclone中的优惠Article
计数执行此操作,其中Question
与User
s具有M2M关系:
Question
django-developers邮件列表上有一些关于实现声明性地声明denormalisations以避免编写如上代码的方法的讨论: