Я получаю эту ошибку в context_processors 'NoneType' object is not iterable

Я хочу показывать сообщения в каждом шаблоне, поэтому мне нужен контекстный процессор. Но я получаю эту ошибку 'NoneType' object is not iterable. Я не могу решить эту проблему. Может ли кто-нибудь посмотреть код и дать решение этой проблемы.

# context_processors.py

from django.contrib import messages
from .models import Loan

def message_notification(request):
    loan_requested_lists = Loan.objects.filter(loan_req_user=request.user, active=True, status='Pending')
    if loan_requested_lists.exists():
        if loan_requested_lists.count() == 1:
            for i in loan_requested_lists:
                return messages.info(request, f'{i.user.username}({i.user.account_number}) was requested for loan.')
        else:
            return messages.info(request, f'{loan_requested_lists.count()} users were requested for loan.')

Это мой models.py

from django.utils import timezone
from django.db import models
from accounts.models import User
from django.core.exceptions import ValidationError

# Create your models here.
STATUS = (
    ('Pending', 'Pending'),
    ('Accepted', 'Accepted')
)

EDITABLE_STATUS = (
    ('Not Applicable', 'Not Applicable'),
    ('Requested', 'Requested'),
    ('Approved', 'Approved'),
    ('Not Approved', 'Not Approved'),
    ('Updated', 'Updated'),
)

def validate_date(date):
    if date < timezone.now():
        raise ValidationError("Date cannot be in the past")

class Loan(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    loan_req_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='loan_given_user_list', verbose_name='Loan Requested From User')
    amount = models.PositiveIntegerField(verbose_name='Loan Amount')
    date = models.DateTimeField(default=timezone.now, validators=[validate_date], verbose_name='Loan Return Date')
    status = models.CharField(max_length=8, choices=STATUS, default='Pending')
    editable = models.CharField(max_length=14, choices=EDITABLE_STATUS, default='Not Applicable')
    active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, verbose_name='Loan Requested Date')

    def __str__(self):
        return self.user.username

Я нашел решение. Вот код в файле context_processors.py

#context_processors.py

def message_notification(request):
    message = None
    if request.user.is_authenticated:
        loan_requested_lists = Loan.objects.filter(loan_req_user=request.user, active=True, status='Pending')
        if loan_requested_lists.exists():
            if loan_requested_lists.count() == 1:
                for i in loan_requested_lists:
                    message = f'{i.user.username}({i.user.account_number}) was requested for loan.'
            else:
                message = f'{loan_requested_lists.count()} users were requested for loan.'
    context = {
        'message': message
    }
    return context
Вернуться на верх