def assign_alias(request,id): alias = get_object_or_404( TaskAlias, pk = id ) if 'POST' == request.method: form = AliasForm( request.POST, instance = alias ) form.fields['task'].queryset = Task.objects.all().order_by('name') # Make a task from this alias if 'makeonefromthis' in form.data: # Check this already hasnt been done existing = Task.objects.filter(name=alias.string) if existing: request.notifications.error('Looks like you have already done this') return HttpResponseRedirect(reverse('assign_alias', args=[id])) else: # No existing task with this name, create one based on this alias task = Task() task.name = alias.string task.save() alias.task = task alias.save() request.notifications.success('Proper task created from alias') return HttpResponseRedirect(reverse('home')) # Save alias against chosen task elif form.is_valid(): obj = form.save() request.notifications.success('Thanks, now %s is known as %s' % ( alias.string, obj.task ) ) return HttpResponseRedirect(reverse('home')) else: pass else: form = AliasForm(instance = alias) form.fields['task'].queryset = Task.objects.all().order_by('name') return render(request,'assign_alias.html', { 'title' : '"%s"' % alias.string, 'form' : form, 'success_url' : reverse('home') })