Добавьте "бизнес-контекст" во все представления 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 всякий раз, когда пользователь делает выбор из выпадающего списка.