Python Django AttributeError,KeyError
这是我的Python Django AttributeError,KeyError,python,django,Python,Django,这是我的views.py def new_note(request): form = NoteForm(request.POST, user=request.user) . . . return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered}) class NoteForm(forms.ModelForm): def __init__(self,
views.py
def new_note(request):
form = NoteForm(request.POST, user=request.user)
. . .
return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered})
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')
这是我的forms.py
def new_note(request):
form = NoteForm(request.POST, user=request.user)
. . .
return render(request, 'newNote.html', {'note_form': NoteForm, 'registered': registered})
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\u组
是ModelChoseField
在这段代码中,我尝试获取记录的用户id
当我尝试使用它时,我得到了错误KeyError'user'
,当我将self.user=kwargs.pop('user')
更改为self.user=kwargs.pop('user',None)
我得到了这样的错误
AttributeError:“非类型”对象没有属性“pk”
我绝对肯定self.user.pk
返回的值是我所期望的
我的问题是如何处理这类错误?您的渲染完全忽略了您提供的表单
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
请共享您的完整视图。py