'invalid_choice' в поле внешнего ключа django - PullRequest
0 голосов
/ 07 ноября 2018

У меня проблема с полем первичного ключа, которое я инициализирую с набором запросов, форма отображается, но во время отправки данных возникает ошибка 'to_python повысить ValidationError (self.error_messages [' invalid_choice '], code =' invalid_choice ')' появляется '. Я знаю, что есть способ аннулировать метод to_python, но я все еще не могу заставить его работать. Буду признателен за любую помощь.

Мой взгляд:

class PlanesCreate(generic.CreateView):
    model= Plan_Estudios
    template_name= 'ControlEscolar/Administracion/planes/planes_form.html'
    form_class= PlanForm
    success_url = reverse_lazy('ControlEscolar:planes_filtro')

    def get_form_kwargs(self):
        kwargs = super(PlanesCreate, self).get_form_kwargs()
        kwargs.update({'programa': self.request.session['programa']})
        return kwargs

Моя форма:

class PlanForm(forms.ModelForm):
    class Meta:
        model = Plan_Estudios
        fields = "__all__"
        widgets = {
            'nombreplan': forms.TextInput(attrs={'class':'form-control'}),
            'programa': forms.Select(attrs={'class':'form-control'}),
        }
    def __init__(self, *args, **kwargs):
        p=kwargs.pop('programa', None)
        super(PlanForm, self).__init__(*args, **kwargs)
        query=Programa_Academico.objects.filter(pk=p)
       self.fields['programa'].queryset=query #Inicialize field with query

Моя модель:

class Plan_Estudios(models.Model):
    nombreplan= models.CharField(max_length=30)
    programa= models.ForeignKey(Programa_Academico, on_delete=models.SET_NULL, null=True)
    def __str__(self):
        return self.nombreplan

class Programa_Academico(models.Model):
    nombreP= models.CharField(max_length=50)
    siglas= models.CharField(max_length=10)
    def __str__(self):
        return self.siglas

Ошибка:

File "C:\Users\Envs\py1\lib\site-packages\django\forms\forms.py" in is_valid

185.         return self.is_bound and not self.errors

File "C:\Users\Envs\py1\lib\site-packages\django\forms\forms.py" in errors

180.             self.full_clean()

File "C:\Users\Envs\py1\lib\site-packages\django\forms\forms.py" in full_clean
381.         self._clean_fields()

File "C:\Users\Envs\py1\lib\site-packages\django\forms\forms.py" in _clean_fields
399.                     value = field.clean(value)

File "C:\Users\Envs\py1\lib\site-packages\django\forms\fields.py" in clean
147.         value = self.to_python(value)

File "C:\Users\Envs\py1\lib\site-packages\django\forms\models.py" in to_python
1252.             

raise ValidationError(self.error_messages['invalid_choice'], 
code='invalid_choice')
Exception Type: KeyError at /ControlEscolar/planes/crear
Exception Value: 'invalid_choice'
...