Khi bạn đang cố gắng truy cập vào các lĩnh vực ManyToMany trong tín hiệu post_save của mô hình các đối tượng có liên quan đã được loại bỏ và sẽ không được thêm một lần nữa cho đến khi sau khi tín hiệu kết thúc.
Để truy cập dữ liệu này, bạn phải liên kết với phương thức save_related trên bạn ModelAdmin. Rất tiếc, bạn cũng sẽ phải bao gồm mã trong tín hiệu post_save cho các yêu cầu không phải quản trị viên yêu cầu tùy chỉnh của bạn.
xem: https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_related
Ví dụ:
# admin.py
Class GroupAdmin(admin.ModelAdmin):
...
def save_related(self, request, form, formsets, change):
super(GroupAdmin, self).save_related(request, form, formsets, change)
# do something with the manytomany data from the admin
form.instance.users.add(some_user)
Sau đó, trong tín hiệu của bạn, bạn có thể làm cho những thay đổi tương tự mà bạn muốn thực hiện trên tiết kiệm:
# signals.py
@receiver(post_save, sender=Group)
def group_post_save(sender, instance, created, **kwargs):
# do somethign with the manytomany data from non-admin
instance.users.add(some_user)
# note that instance.users.all() will be empty from the admin: []
Vì vậy, bạn đang thay đổi pk của các đối tượng? –
Tôi có một đối tượng và có mối quan hệ với nhiều người khác, nhưng tôi có thể nhận được mối quan hệ cập nhật – diegueus9