我需要檢測post_remove信號的錯誤,所以我寫了:信號m2m_changed與post_remove
def handler1(sender, instance, action, reverse, model, pk_set, **kwargs):
if (action == 'post_remove'):
test1() # not declared but make a bug if it works, to detect :)
m2m_changed.connect(handler1, sender=Course.subscribed.through)
如果我用「post_add」這是確定..改變「post_remove」它是一個Django的bug關於post_remove ??
我使用的模型和我切換beetween的「訂閱」兩個值(所以一加,一個刪除)
class Course(models.Model):
name = models.CharField(max_length=30)
subscribed = models.ManyToManyField(User, related_name='course_list', blank=True, null=True, limit_choices_to={'userprofile__status': 'student'})
我已經看到了使用Django的錯誤後,也許它沒有帶過固定...(或它是我^^)
我真的不知道該怎麼辦,我需要婁代碼
要做...我不能使用信號,要麼.save()覆蓋..我需要從模型字段(M2M)中刪除用戶,如果他從另一個模型的字段(M2M)中刪除... – nlassaux 2012-07-27 11:48:36
I'我不確定最好的方法。您可以嘗試使用'pre_save'信號將實例上的相關對象存儲到實例中。 'instance._old_m2m = list(instance.subscribed.values_list('pk',flat = True))'。然後在你的'post_add'信號處理器中,比較'pk_set'和'instance._old_m2m'。祝你好運! – Alasdair 2012-07-27 12:05:16
是的,我已經考慮過了,但它並沒有真正優化:/我會搜索... – nlassaux 2012-07-27 12:12:35