Django-unicorn сбрасывает смонтированные данные после нажатия кнопки

За последние недели я создал несколько небольших приложений и каждый раз натыкался на одну и ту же проблему, которую не мог решить с помощью документации или поиска в Google.

TL;DR

Я не могу сохранить результаты кверисета, инициализированного внутри __init__ или mount() после нажатия кнопки и изменения любого другого значения, не связанного с кверисетом. Есть ли способ сохранить/кэшировать результаты?

Простой пример

Начальная позиция

components/simple_unicorn.py
from django_unicorn.components import UnicornView
from any.app.models import MyObject

class SimpleUnicornView(UnicornView):
    # Initialize my sample objects empty as I don't have any filter data, yet
    objects: MyObject = MyObject.objects.none()
    # A single filter value - In reality thos are multiple buttons
    filter_y: str = ""
    # any variable unrelated to the queryset
    show_button_x: bool = False

    def mount(self):
        self.load_data()

    def load_data(self):
        self.objects = MyObject.objects.filter(any_value=self.filter_y)
        # the execution of this query takes very long

    def updated_filter_y(self, value):
        # after changing varables related to the qs it is obvious the reload the data
        self.load_data()

    # this is where the problem pops up
    def toggle_button_x(self):
        # I'm only changing a variable not connected to the loaded data
        self.show_button_x = not self.show_button_x
        # Now I must execute the query again, otherwise self.objects is empty
        self.load_data()
simple.html
<div>

  <select unicorn:model="filter_y">
    <option value="">-</option>
    <option value="A">Filter for "A"</option>
    <option value="B">Filter for "B"</option>
  </select>

  <ul>
    {% for obj in objects %}
    <li>{{obj}}</li>
    {% endfor %}
  </ul>

  {% if show_button_x %}
  <button>X</button>
  {% endif %}

  <button unicorn:click="toggle_button_x">Toggle Button X</button>

</div>

После щелчка на Toggle Button X правильно появляется <button>X</button>, но мой список objects исчезает. Как если бы он заново инициализировал MyObject.objects.none() с самого начала просмотра. Возможно ли это?

Я делаю что-то неправильно или кто-то знает хороший обходной путь?

К сожалению, на stackoverflow пока нет тега django-unicorn. Также не так много ресурсов об этом невероятно простом и мощном фреймворке.

Вернуться на верх