Django добавляет только email пользователя, который создал индивидуальное оповещение
Я пытаюсь добавить только email пользователя, который создал индивидуальное оповещение, в уведомление по электронной почте.
Статус: у каждого отдельного пользователя есть своя панель, и они должны получать уведомление, когда их собственная стоимость криптовалюты ниже предупреждения.
Проблема: в настоящее время все пользователи получают все уведомления по электронной почте, в то время как правильным было бы, чтобы пользователь получал только письма, связанные с его собственной криптовалютой.
Вопрос: как я могу добавить только email пользователя, который создал индивидуальное оповещение?
Я попробовал два различных подхода: (i) SerializerMethodField() с initial_data, и (ii) я попробовал использовать CustomUserSerializer(data=request.data)
. Первый метод вызвал ошибку AlertsSerializer' object has no attribute 'initial_data'
, а второй метод вызвал ошибку NameError: name 'request' is not defined
Есть ли у вас предложение, как правильно добавить email пользователя в его собственные оповещения?
views.py
class CreateSectionAlerts(generics.CreateAPIView):
def perform_create(self, serializer):
serializer.save(user=self.request.user)
print("New alert is saved", serializer.save(user=self.request.user))
serializer_class = AlertsSerializer
class ListSectionAlerts(generics.ListAPIView):
queryset = SectionAlerts.objects.all()
serializer_class = AlertsSerializer
# ------- EMAIL STARTS HERE
def get_queryset(self):
print("****ALERTS START get_querysetdavid")
queryset = SectionAlerts.objects.filter(userid=self.kwargs["pk"])
for b in SectionAlerts.objects.filter(userid=self.kwargs["pk"]):
print("b---Print SectionAlerts", b.id, b.valuenow, b.userid, b.ticker.c_0)
if b.ticker.c_0 < b.valuealarm:
print("Alert is achieved and must be sent")
serializer = CustomUserSerializer(data=request.data)
if serializer.is_valid():
user_data = serializer.data
user=NewUser.objects.get(email=user_data['email'])
email_body = 'Hi ' + user.user_name+ ', you received this message because the value of the crypto ' + str(b.ticker) + ' is now ' + str(b.ticker.c_0) +'€.' + ' and reached the alert value of ' + str(b.valuealarm) +'€.' + '\n'+ 'This email confirms this event. \n' + 'Click here https://www.cryptothlon.com to signin in your account and know more. \n' +'\n'+ 'Your Cryptothlon Team'
data={'email_body': email_body, 'to_email': user.email,
'email_subject': 'Crypto alert'}
Util.send_email(data)
if user:
json = serializer.data
return Response(json, status=status.HTTP_201_CREATED)
print("Email sent")
try:
record = SectionAlerts.objects.get(id = b.id )
record.delete()
print("Record deleted successfully!")
except:
print("Record doesn't exists")
return queryset
# ------- EMAIL ENDS HERE