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. Также не так много ресурсов об этом невероятно простом и мощном фреймворке.