Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我能';t在forms.py中使用我的django模型值。我得到:name';用户';没有定义_Python_Django - Fatal编程技术网

Python 我能';t在forms.py中使用我的django模型值。我得到:name';用户';没有定义

Python 我能';t在forms.py中使用我的django模型值。我得到:name';用户';没有定义,python,django,Python,Django,我试图使用django模型中的值,但是我的代码中缺少了一些东西,我无法理解它是什么 我正在使用django 1.11 我是否需要表单类来继承请求?如果是这样,我该怎么做 from django import forms from .models import Profile from django.contrib.auth.models import User from django.shortcuts import render class form(forms.Form): depar

我试图使用django模型中的值,但是我的代码中缺少了一些东西,我无法理解它是什么

我正在使用django 1.11

我是否需要表单类来继承请求?如果是这样,我该怎么做

from django import forms
from .models import Profile
from django.contrib.auth.models import User
from django.shortcuts import render

class form(forms.Form):
  department_string = ((user.profile.departnemt_1_number, 'Afd A',), ('2', 'Afd B',),)
  afdeling = forms.ChoiceField(widget=forms.RadioSelect, choices=department_string, initial='1')
I get:异常值:未定义名称“user”


非常感谢您的帮助

在那一点上你不能定义它;在定义表单的位置,范围内没有
用户

您需要重写表单的
\uuuuu init\uuuu
方法,以接受用户提供的额外关键字参数,并适当修改选项

class MyForm(forms.Form):
  afdeling = forms.ChoiceField(widget=forms.RadioSelect, initial='1')

  def __init__(self, *args, **kwargs):
     user = kwargs.pop('user')
     super(MyForm, self).__init__(*args, **kwargs)
     self.fields['afdeling'].choices = ((user.profile.departnemt_1_number, 'Afd A',), ('2', 'Afd B',),)
不要忘记从视图中传递用户:

if request.method == 'POST':
       form = MyForm(request.POST, user=request.user)
       ...
    else:
       form = MyForm(request.POST, user=request.user)
    ...

在那一点上你不能定义它;在定义表单的位置,范围内没有
用户

您需要重写表单的
\uuuuu init\uuuu
方法,以接受用户提供的额外关键字参数,并适当修改选项

class MyForm(forms.Form):
  afdeling = forms.ChoiceField(widget=forms.RadioSelect, initial='1')

  def __init__(self, *args, **kwargs):
     user = kwargs.pop('user')
     super(MyForm, self).__init__(*args, **kwargs)
     self.fields['afdeling'].choices = ((user.profile.departnemt_1_number, 'Afd A',), ('2', 'Afd B',),)
不要忘记从视图中传递用户:

if request.method == 'POST':
       form = MyForm(request.POST, user=request.user)
       ...
    else:
       form = MyForm(request.POST, user=request.user)
    ...

谢谢为什么我称之为超级方法?它不是用来从继承的类调用init方法吗?覆盖init方法是什么意思?以前有吗?是的,它用于从继承类调用方法,这正是您在这里要做的。谢谢!为什么我称之为超级方法?它不是用来从继承的类调用init方法吗?覆盖init方法是什么意思?以前有吗?是的,它用于从继承的类调用方法,这正是您在这里要做的。