Django messages - проверьте, существует ли уже сообщение перед добавлением

Можно ли проверить, существуют ли сообщение и содержимое django перед добавлением другого сообщения?

В моем примере я выполняю try - except в цикле, и если возникает исключение, я добавляю сообщение, но я хочу, чтобы сообщение появлялось только один раз, а не для каждого элемента в цикле:

for i in data:
    # do something...
    try:
        # try to act upon something
    except:
        # failed action add a message
        if not messages.?.contains("Error: Unable to perform action X")
            messages.add_message(request, messages.ERROR, 'Error: Unable to perform action X')
        pass

1 ответ

Решение

Ты ищешь messages.get_messages(request) метод.

Чтобы получить список всех сообщений, оберните вызов этого метода в list конструктор:

all_messages = list(messages.get_messages(request))

Каждый объект сообщения имеет информацию о своем уровне, самом сообщении и т. Д. Вы можете использовать эти поля, чтобы проверить, существует ли уже искомое сообщение.

Простой фрагмент:

all_error_messages_content = [msg.message for msg in list(messages.get_messages(request)) if msg.level_tag == 'error']
if 'Error: Unable to perform action X' not in all_error_messages_content:
     messages.add_message(request, messages.ERROR, 'Error: Unable to perform action X')
Другие вопросы по тегам