Tôi đọc về tín hiệu django (http://docs.djangoproject.com/en/dev/topics/signals/), nhưng theo như tôi hiểu, các tín hiệu không bao giờ được chuyển đổi thành các kích hoạt SQL theo nghĩa đen (http://en.wikipedia.org/wiki/Database_trigger).django-signal vs triggers?
Nếu tôi đúng là các tín hiệu và trình kích hoạt khác nhau, thì cái nào tốt hơn và theo cách nào? Thực hành tốt nhất là gì?
....................
Dưới đây là một ví dụ cụ thể nếu bạn muốn một:
class Location(models.Model):
name = models.CharField(max_length=30)
class Person(models.Model):
location = models.ForeignKey('Location')
class Team(models.Model):
locations = models.ManyToManyField('Location')
Tôi muốn có một người để được có thể tham gia một nhóm nếu và chỉ khi vị trí của người đó nằm trong bộ địa điểm của nhóm đó. Tôi không biết làm thế nào để làm điều đó với những ràng buộc quan hệ bình thường, cho đến chừng nào tôi biết mình bị buộc phải sử dụng các trigger hay tín hiệu. Ruột của tôi nói rằng tôi nên sử dụng gây nên nhưng tôi muốn biết thực hành tốt nhất.
+1: Đó và ghi đè đơn giản cho 'save' trong mô hình bao gồm tất cả các căn cứ mà tôi từng gặp. –
+1. Tín hiệu thường làm chậm quá trình kiểm tra của bạn nếu bạn đang tải đồ đạc kích hoạt tín hiệu. Đó là một nỗi đau để làm việc xung quanh bằng cách 'ngắt kết nối 'trước khi kiểm tra và' kết nối' ing sau đó. –
Tôi có hai mục tiêu: 1) làm cho trang web thực hiện những gì tôi muốn (xác thực) 2) bắt tôi khi * Tôi * phạm sai lầm. Về mặt số 1, đề xuất này có ý nghĩa. Về mặt số 2, nếu tôi không sử dụng ModelForm để tương tác với DB thì sao? tài liệu nói "Lưu ý rằng trình xác thực sẽ không được chạy tự động khi bạn lưu mô hình". Điều đó có nghĩa là bây giờ tôi có thể vô tình mất toàn vẹn dữ liệu vì tôi đã không gọi trình xác nhận hợp lệ bằng cách gọi 'Person.save()' trước khi sửa đổi DB. Nhưng với trình kích hoạt, không thể kích hoạt nhầm lẫn được. Lý do của tôi có hợp lý không? –