Tôi đang cố gắng kết nối đối tượng "Thông tin" với nhiều "Khách hàng" (xem mã bên dưới)Tại sao tín hiệu Django post_save cho tôi dữ liệu pre_save?
Khi một đối tượng Thông tin được cập nhật, tôi muốn gửi email đến từng Khách hàng được kết nối với Thông tin.
Tuy nhiên, khi tôi đăng nhập trường sold_to mà tín hiệu nhận được, tôi luôn nhận được dữ liệu giống như trước khi lưu.
Tôi đoán điều này là do ManyToManyField của nó và dữ liệu được lưu trữ trong một bảng riêng biệt, nhưng không nên tín hiệu post_save được gọi sau khi tất cả các mối quan hệ đã được cập nhật?
Bất kỳ ai có đề xuất về giải pháp?
class Customer
name = models.CharField(max_length=200)
category = models.ManyToManyField('Category',symmetrical=False)
contact = models.EmailField()
class Information
name = models.CharField(max_length=200)
email = models.EmailField(max_length=200)
mod_date = models.DateTimeField(auto_now=True)
sold_to = models.ManyToManyField(Customer, null=True, blank=True)
def send_admin_email(sender, instance, signal, *args, **kwargs):
from myapp import settings
for cust in instance.sold_to.all():
settings.debug(cust.name)
post_save.connect(send_admin_email, sender=Information)
Edit: apollo13 trong #django cảnh báo cho tôi như thế này: "mặt hàng liên quan (những điều được lưu vào mối quan hệ nhiều-nhiều) sẽ không được lưu như là một phần của một mô hình của phương pháp tiết kiệm, như bạn đã được khám phá." - http://groups.google.com/group/django-users/msg/2b734c153537f970
Nhưng kể từ ngày 9 tháng 7 năm 2006, tôi thực sự thực sự hy vọng có giải pháp cho việc này.
Cảm ơn bạn đã trả lời nhanh. Tôi đã thử các bản vá, và sau một chút hack tôi đã nhận nó để làm việc. Sẽ đăng giải pháp dưới đây. – schmilblick