When I try to add delete to my views I receive an error:
Team matching query does not exist.
What am I doing wrong in here? It seems like traceback leads me to context_processor.py. This is my code below:
Views.py
@login_required
def team(request, team_id):
team = get_object_or_404(Team, pk=team_id, status=Team.ACTIVE, members__in=[request.user])
invitations = team.invitations.filter(status=Invitation.INVITED)
return render(request, 'team/team.html', {'team': team, 'invitations': invitations})
@login_required
def activate_team(request, team_id):
team = get_object_or_404(Team, pk=team_id, status=Team.ACTIVE, members__in=[request.user])
userprofile = request.user.profile
userprofile.active_team_id = team.id
userprofile.save()
messages.info(request, 'The team was activated')
return redirect('team:team', team_id=team.id)
@login_required
def add(request):
profile = request.user.profile
form = TeamForm()
if request.method == 'POST':
form = TeamForm(request.POST, request.FILES)
if form.is_valid():
team = form.save(commit=False)
team.created_by = request.user
team.save()
team.members.add(request.user)
profile.active_team_id = team.id
profile.save()
return redirect('account')
context = {'form': form}
return render(request, 'team/add.html', context)
@login_required
def edit(request):
#profile = request.user.profile
team = get_object_or_404(Team, pk=request.user.profile.active_team_id, status=Team.ACTIVE, members__in=[request.user])
form = TeamForm(instance=team)
if request.method == 'POST':
form = TeamForm(request.POST, request.FILES, instance=team)
if form.is_valid():
team.save()
messages.info(request, 'The changes was saved')
return redirect('team:team', team_id=team.id)
context = {'form': form, 'team': team}
return render(request, 'team/edit.html', context)
@login_required
def delete(request, pk):
team = Team.objects.get(pk=request.user.profile.active_team_id)
if request.method == 'POST':
team.delete()
return redirect('account')
context = {'object': team}
return render(request, 'team/delete.html', context)
urls.py
urlpatterns = [
path('add/', add, name='add'),
path('edit/', edit, name='edit'),
path('delete/', delete, name='delete'),
path('invite/', invite, name='invite'),
path('activate_team/<int:team_id>/', activate_team, name='activate_team'),
path('<int:team_id>/', team, name='team'),
path('teams_page/<int:team_id>/', teams_page, name='teams_page'),
]
delete.html
{% extends 'main.html' %}
{% block content %}
<!-- Main Section -->
<main class="formPage my-xl">
<div class="content-box">
<div class="formWrapper">
<br>
<form class="form" action="" method="POST">
{% csrf_token %}
<p>Are you sure you want to delete "{{object}}"?</p>
<a class="btn btn--sub btn--lg my-md" href="{{request.GET.next}}">Go Back</a>
<input class="btn btn--sub btn--lg my-md" type="submit" value="Confirm" />
</form>
</div>
</div>
</main>
{% endblock %}
context_processors.py
from .models import Team
def active_team(request):
if request.user.is_authenticated:
if request.user.profile.active_team_id:
team = Team.objects.get(pk=request.user.profile.active_team_id)
return {'active_team': team}
return {'active_team': None}
The error traceback:
Traceback Switch to copy-and-paste view
D:\anaconda3\envs\gla-website\lib\site-packages\django\core\handlers\exception.py, line 47, in inner
response = get_response(request)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\core\handlers\base.py, line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
…
▶ Local vars
D:\GLA-WEBSITE\gla\index\views.py, line 13, in index
return render(request, 'index/index.html',context)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\shortcuts.py, line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\template\loader.py, line 62, in render_to_string
return template.render(context, request)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\template\backends\django.py, line 61, in render
return self.template.render(context)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\template\base.py, line 168, in render
with context.bind_template(self):
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\contextlib.py, line 119, in __enter__
return next(self.gen)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\template\context.py, line 244, in bind_template
updates.update(processor(self.request))
…
▶ Local vars
D:\GLA-WEBSITE\gla\team\context_processors.py, line 7, in active_team
team = Team.objects.get(pk=request.user.profile.active_team_id)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\db\models\manager.py, line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
…
▶ Local vars
D:\anaconda3\envs\gla-website\lib\site-packages\django\db\models\query.py, line 435, in get
raise self.model.DoesNotExist(