Tôi đang cố gắng cập nhật ngay lập tức một bản ghi sau khi đã lưu. Ví dụ này có vẻ vô nghĩa nhưng hãy tưởng tượng chúng ta cần phải sử dụng một API sau khi dữ liệu được lưu để có được một số thông tin thêm và cập nhật các bản ghi:post_save trong django để cập nhật phiên bản ngay lập tức
def my_handler(sender, instance=False, **kwargs):
t = Test.objects.filter(id=instance.id)
t.blah = 'hello'
t.save()
class Test(models.Model):
title = models.CharField('title', max_length=200)
blah = models.CharField('blah', max_length=200)
post_save.connect(my_handler, sender=Test)
Vì vậy, các trường 'thêm' là nghĩa vụ phải được thiết lập để 'hello' sau mỗi lần lưu. Chính xác? Nhưng nó không hoạt động.
Bất kỳ ý tưởng nào?
Có thể bạn có thể mô tả cách nó không hoạt động? Lúc đầu đỏ mặt, nó có vẻ như nó sẽ làm cho một vòng lặp vô hạn, kể từ khi post_save gọi tiết kiệm, mà nên gọi post_save, vv Có lẽ Django đang ngăn chặn đệ quy? –
Tôi thấy một vòng lặp vô hạn ở đó. Sau khi t.save() một tín hiệu post_save được gửi đi, hãy đoán hàm nào được gọi là ... – stefanw
oh, tôi đã bị ấn tượng bởi Django sẽ không để cho post_save lưu lại lần thứ hai nữa? Tôi đoán là không. Trong trường hợp đó, bạn đã đúng. Nó sẽ là một vòng lặp vô hạn. Nhưng tôi không thấy vòng lặp hay gì cả. – givp