如何在我选择的字段表单中获得多对多字段显示

时间:2020-11-05 01:55:29

标签: django django-forms

表格

class Form_elegir_carrera(forms.Form):
    carrera_del_tutor= forms.ModelChoiceField(queryset=None,widget=forms.Select(attrs={'class': 'select is-normal'}),label='Tutor carrera',required=True)     
    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(Form_elegir_carrera,self).__init__(*args, **kwargs)
        
        if self.user:
          
            self.fields["carrera_del_tutor"].queryset = Tutor.objects.filter(user_id=self.user).get().carrera 
            
        else:
            self.fields['carrera_del_tutor'].queryset = Tutor.objects.none()
    def clean(self):    
        
        carrera_del_tutor = self.cleaned_data.get("carrera_del_tutor")
        

观看次数

@login_required
def elegir_carrera(request, tutor_id):
    context = {
        'tutor_id':tutor_id
    }
    if request.method == 'POST':
        form = Form_elegir_carrera(data=request.POST or None)
        if form.is_valid():
            descripcion = form.cleaned_data.get('carrera_del_tutor', None)
                        
            context = {
                 'form': form,'tutor_id':tutor_id 
            }
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
        else:
            context = { 'form': form, 'tutor_id':tutor_id }
            return render(request, "elegir_carrera.html", context)
    else:
        form = Form_elegir_carrera(user = tutor_id)
        context = { 'form': form,'tutor_id':tutor_id}
        return render(request, "elegir_carrera.html", context)
    
    context = { 'form': form, 'tutor_id':tutor_id }

    return render(request, "elegir_carrera.html", context)

模型

class Tutor(models.Model):
    
    user = models.OneToOneField(
        User, on_delete=models.CASCADE, primary_key=True)
    nombre = models.CharField(max_length=50, blank=False, null=True)
    apellido = models.CharField(max_length=50, blank=False, null=True)    
    carrera = models.ManyToManyField(Carrera, blank=True)  
    
    class Meta:
        verbose_name_plural = "Tutores"
        verbose_name = "Tutor"

    def __str__(self):
        return '%s %s' % (self.nombre, self.apellido)
        #return self.user.email

我想查询用户拥有的所有carreras,并在要选择的下拉列表中显示它们。到现在为止,它仍显示与用户相关的carreras,但是当我提交时,它抛出一个错误,说那不是可用的内容之一。

0 个答案:

没有答案
相关问题