试图获取要在表单中使用的request.user时未定义名称

2024-04-20 01:16:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个问题被问了很多次,但我在stackoverflow中发布的解决方案中不断遇到同样的错误。我可能犯了一个简单的错误,但作为一个初学者,我不知道我的错误在哪里

这是我的表格。py

from django import forms
from .models import *

class AddMark(forms.Form):

    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(AddMark, self).__init__(*args, **kwargs)      
    
    teacher = Teacher.objects.filter(user = self.user)[:1]
    modules = Module.objects.filter(enseignants__in = (teacher))

    desc = forms.CharField(label='Description')
    coef = forms.FloatField(label='Coefficient')
    max_mark = forms.FloatField(label='Max Mark')
    module = forms.ChoiceField(label='Module',choices=modules)

似乎错误来自于

    teacher = Teacher.objects.filter(user = self.user)[:1]


2条回答

试试这个:

def __init__(self, user, *args, **kwargs):
    user = user
    super(AddMark, self).__init__(*args, **kwargs) 

问题是,您在具有该信息的方法之外引用self.user

如果要在提交表单时执行这些操作,可能应该将它们放在is_valid()方法中

class AddMark(forms.Form):
    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(AddMark, self).__init__(*args, **kwargs)      

    def is_valid(self):
        teacher = Teacher.objects.filter(user = self.user)[:1]
        modules = Module.objects.filter(enseignants__in = (teacher))

当我有疑问的时候,我总是觉得在github上查看django的源代码很有帮助,它确实可以消除围绕其类的许多神秘感! https://github.com/django/django/blob/f5e5aac59ebbcea46b98d37834915de0f43d7cc8/django/forms/forms.py#L22

相关问题 更多 >