我不能在forms.py中使用我的django模型值。我明白了:名称'user'未定义

时间:2017-09-12 13:58:24

标签: 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):
  department_string = ((user.profile.departnemt_1_number, 'Afd A',), ('2', 'Afd B',),)
  afdeling = forms.ChoiceField(widget=forms.RadioSelect, choices=department_string, initial='1')

我得到:异常值:名称'user'未定义

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

你不能在那时定义它;在定义表单的范围内,范围内没有user

您需要覆盖表单的__init__方法,以接受用户提供的额外关键字参数,并相应地修改选项。

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