Add, concatenate object to a queryset in django

0

Today I want to share this solution to add elements to a django queryset

def Caracterizacion_estudianteUpdate(request, estudiante_id, caracterizacion_id):

    caracterizacion = Caracterizacion.objects.get(id=caracterizacion_id)
    estudiante = Estudiante.objects.get(id=estudiante_id)

    semestres = Semestre.objects.exclude(id__in = estudiante.caracterizacion_set.values_list('semestre'))
    semestres |= Semestre.objects.filter(id=caracterizacion.semestre.id)

    if request.method == 'POST':
        form = CaracterizacionForm(request.POST, instance=caracterizacion)
        if form.is_valid():
            form.save()
            # recargo la pagina cuando se guarda la caracterizacion
            return redirect('caracterizacion_estudiante:list', estudiante_id=estudiante_id)
    else:
        form = CaracterizacionForm(instance=caracterizacion)
        form.fields['semestre'].queryset = semestres
        contexto = {
            'estudiante': estudiante,
            'form': form,
        }
        return render(request, 'caracterizacion/caracterizacion_update_form.html', contexto)
    
asked by Cesar Martinez Quiroga 14.11.2018 в 06:55
source

1 answer

1
semestres = Semestre.objects.exclude(id__in = estudiante.caracterizacion_set.values_list('semestre'))
semestres |= Semestre.objects.filter(id=caracterizacion.semestre.id)

In the first line I create a queryset with a query, and in the second I add an extra object to this queryset using the operator |= stacker can concatenate several querysets

    
answered by 14.11.2018 / 06:55
source