Добавьте "бизнес-контекст" во все представления Django

У меня есть приложение, работающее с магазином, с некоторым представлением товаров, которые там продаются, со списком сотрудников и т.д. Теперь будет второй (физический) магазин, а мое приложение не готово к работе с более чем одним :)

Итак, к моим моделям будет добавлена модель Location, а внешние ключи добавлены к Item и Employee...

Но мой вопрос в том, как перестроить представления ... Итак, мое представление, в котором перечислены все элементы, должно добавить некоторый фильтр сверху для выбора местоположения и затем фильтровать список на основе этого выбора... и представление Employee то же самое (и все остальные те же самые) ....

Итак - имея этот фильтр сверху, я должен установить некоторую глобальную ("сессионную"?) переменную, и на основании ее фильтровать каждый вид? (или добавить ее в параметры url??? или любым другим способом?)

Пожалуйста, посоветуйте мне, как сделать это элегантным способом.

У меня есть простые представления, основанные на функциях:

def EmployeeList(request): 
   objList = Employee.objects.all() 
   return render(request,'Employee/list.html,{'objList':objList})

И пока что не слишком сложные урлы ;)

path('EmployeeList/', viewsEmployee.EmployeeList, name="EmployeeList"),    
# urls.py
path("/store", View)
path("/store/<int:pk>", View)
# views.py
def View(request, pk=None):
    if pk:
        location  = Location.objects.get(pk=pk)
        employees = Employee.objects.filter(location=location)
        items     = Item.objects.filter(location=location)
    else:
        employees = Employee.objects.all()
        items     = Item.objects.all()

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

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