Query returns None in Celery tasks
I have a celery tasks in my application but when I try to query the database in the functions, some of them returns Does not exist or None
@shared_task
def email_on_assign_reviewer(submission, reviewerlist):
"""
Send an email to the Reviewer when they are assigned to review
"""
print(submission) # prints normally
print(reviewerlist) # this prints the list of id of reviewers perfectly
submission = Submission.objects.get(id=submission)
print(submission) # this prints the submission perfectly
context = {"some": "context"}
for id in reviewerlist:
reviewer = Reviewer.objects.filter(id=id).first()
print(reviewer) #this returns none
if reviewer:
context['reviewer_name'] = reviewer.user.first_name
utils.sendEmail(
context,
template="review_assign.html",
to=[reviewer.user.email]
)
MY VIEW
def perform_create(self, serializer):
submission = Submission.objects.filter(id=self.kwargs['submission_pk']).first()
*SOME LOGIC*
data = serializer.save()
for i in reviewerlist:
print(Reviewer.objects.filter(id=i).first()) # this prints the reviewers perfectly
tasks.email_on_assign_reviewer.delay(submission.id, reviewerlist)
MY SERIALIZER
def create(self, validated_data):
submission_id = self.context['submission_id']
user_ids = validated_data.pop('user_ids', [])
existing_profile_ids = Somequery.objects.all()
for user_id in user_ids:
if user_id not in existing_profile_ids:
reviewer = Reviewer.objects.create(submission_id=submission_id, user_id=user_id, )
reviewers_to_create.append(reviewer.pk)
return reviewers_to_create
In some tasks, the submission returns DoesnotExist