表格
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,但是当我提交时,它抛出一个错误,说那不是可用的内容之一。