簡體   English   中英

嘗試獲取 request.user 以在表單中使用時未定義名稱

[英]Name is not defined while trying to get request.user to use in a form

我知道這個問題被問了很多次,但是我在 stackoverflow 中發布的解決方案總是遇到同樣的錯誤。 我可能犯了一個簡單的錯誤,但作為一個初學者,我真的不明白我的錯誤在哪里。

這是我的forms.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]

嘗試這個:

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))

當我有疑問時,我總是發現它對 go 有幫助,請參閱 django 在 github 上的源代碼,它確實可以消除圍繞其類的許多謎團! https://github.com/django/django/blob/f5e5aac59ebbcea46b98d37834915de0f43d7cc8/django/forms/forms.py#L22

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM