Tôi có một ForeignKey có thể rỗng trong mô hình của tôi để mô hình hóa một khớp nối lỏng giữa các mô hình. Có vẻ như vậy:Nullable ForeignKeys và xóa một thể hiện mô hình được tham chiếu
class Message(models.Model):
sender = models.ForeignKey(User, null=True, blank=True)
sender_name = models.CharField(max_length=255)
Khi lưu tên người gửi được ghi vào thuộc tính sender_name. Bây giờ, tôi muốn có thể xóa cá thể Người dùng được tham chiếu bởi người gửi và để lại thông báo tại chỗ.
Ngoài hộp, mã này luôn dẫn đến thư đã xóa ngay khi tôi xóa phiên bản Người dùng. Vì vậy, tôi nghĩ rằng một xử lý tín hiệu sẽ là một ý tưởng tốt.
def my_signal_handler(sender, instance, **kwargs):
instance.message_set.clear()
pre_delete.connect(my_signal_handler, sender=User)
Đáng buồn thay, đó không phải là giải pháp. Bằng cách nào đó Django đầu tiên thu thập những gì nó muốn xóa và sau đó bắn xử lý pre_delete.
Bất kỳ ý tưởng nào? Cái nút ở đâu trong não tôi?
Cảm ơn lời giải thích và gợi ý để tìm hiểu. –
Câu trả lời kỹ lưỡng. –