Tôi cần thực hiện lưu với mô hình nhưng tôi cần ngắt kết nối một số bộ thu tín hiệu trước khi lưu.Ngắt kết nối tín hiệu cho mô hình và kết nối lại trong django
Ý tôi là,
Tôi có một mô hình:
class MyModel(models.Model):
...
def pre_save_model(sender, instance, **kwargs):
...
pre_save.connect(pre_save_model, sender=MyModel)
và ở một nơi khác trong mã tôi cần một cái gì đó như:
a = MyModel()
...
disconnect_signals_for_model(a)
a.save()
...
reconnect_signals_for_model(a)
Bởi vì tôi cần trong trường hợp này, tiết kiệm mô hình mà không thực thi hàm pre_save_model.
Tuyệt vời. Đây là giải pháp thanh lịch nhất. Bạn có thể sử dụng lại trình quản lý ngữ cảnh trong một số phần của mã. –
Cảnh báo nhỏ: 'weak = False' không phải là mặc định khi kết nối máy thu với tín hiệu. – spg
'yếu' là [không được chấp nhận] (https://docs.djangoproject.com/en/1.Ngoài ra, mọi người nên biết rằng vô hiệu hóa một tín hiệu sẽ ngăn chặn * tất cả * trường hợp từ kích hoạt tín hiệu, không chỉ bối cảnh hiện tại (tức là chủ đề khác, như tín hiệu dường như thread an toàn) , như được đề xuất [ở đây] (http://stackoverflow.com/questions/577376/django-how-do-i-not-dispatch-a-signal#comment64533494_10881618) –