2015-12-11 3 views
1

Это мой views.pyДжанго AttributeError, KeyError

def new_note(request): 
    form = NoteForm(request.POST, user=request.user) 
    . . . 
    return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered}) 

Это мой forms.py

class NoteForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     # self.user = kwargs.pop('user', None) 
     self.user = kwargs.pop('user') 
     # self.validate = kwargs.pop('validate', False) 
     super(NoteForm, self).__init__(*args, **kwargs) 
     groups = StudentGroup.objects.filter(id_nauczyciela=self.user.pk) 
     # print(self.user.pk) 
     self.fields['id_groups'].queryset = groups 

    note_name = forms.CharField(label="Note name", required=True) 

    class Meta: 
     model = Note 
     fields = ('id_groups', 'id_students', 'note_name') 

id_groups является ModelChoseField

В этом коде я пытаюсь взять вошли идентификатор пользователя.

Когда я пытаюсь использовать его я получил ошибку KeyError 'user', когда я изменить self.user = kwargs.pop('user') к self.user = kwargs.pop('user', None) я получил ошибку как этот

AttributeError: 'NoneType' object has no attribute 'pk'

Я абсолютно уверен, self.user.pk возвращаемое значение то, что я ожидал.

Мой вопрос: Как справиться с этим типом ошибки?

+0

Пожалуйста, поделитесь своими полными видами.py – utkbansal

ответ

2

рендеринга полностью игнорирует форму вы предоставили

return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered}) 

Должна быть

return render(request, 'newNote.html', {'note_form': form, 'registered': registered}) 

Это должно решить исходную ключевую проблему ошибок вы имеете, вопрос вы нашли при изменении коды потребуется другая обработка ошибок

self.user = kwargs.pop('user', None) 
# self.validate = kwargs.pop('validate', False) 
super(NoteForm, self).__init__(*args, **kwargs) 

if self.user is not None: 
    groups = StudentGroup.objects.filter(id_nauczyciela=self.user.pk) 
    # print(self.user.pk) 
    self.fields['id_groups'].queryset = groups 
+1

Работа теперь спасибо – Damian

Смежные вопросы