Chỉ truyền id (primary key), rồi để task tự query lại.
Tham số của task phải đi qua broker nên bị serialize (mặc định JSON). Một model instance vừa không serialize được bằng JSON, vừa là snapshot dữ liệu tại thời điểm đẩy task — đến lúc worker chạy, bản ghi trong DB có thể đã đổi, và bạn sẽ ghi đè bằng dữ liệu cũ.
python
@shared_task
def send_invoice(order_id):
order = Order.objects.get(pk=order_id) # luôn là state hiện tại
...
send_invoice.delay(order.id) # không phải send_invoice.delay(order)Hệ quả thứ hai: payload nhỏ gọn, message trong queue nhẹ, không bị vỡ khi model đổi field.
Lưu ý kèm theo: task chạy trên tiến trình khác nên bản ghi có thể đã bị xoá trước khi worker nhận việc — bắt Model.DoesNotExist và kết thúc êm thay vì để task fail và retry vô ích.