作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从 ChoiceField 生成的下拉列表中获取所选的电子邮件 ID。我已经写了一个代码,但显然它不起作用。我该怎么做?
这是我的views.py
@login_required
def assign(request):
if request.method == 'POST':
assign_now = AssignTask(data=request.POST, user=request.user)
if assign_now.is_valid():
task_title = assign_now.cleaned_data.get('title')
task_description = assign_now.cleaned_data.get('desc')
assign_email = assign_now.cleaned_data('assign_to')
assign_email = dict(AssignTask.fields['assign_to'].choices)[assign_email]
user_details = User.objects.get(email=assign_email)
t = Task(title=task_title, description=task_description, assigned_to=user_details)
t.save()
return HttpResponse('<h2>Successfully assigned task</h2>')
else:
return HttpResponse('<h2><Task assignment failed/h2>')
else:
return HttpResponse('<h2>Request method error</h2>')
这是我的forms.py
class AssignTask(forms.Form):
title = forms.CharField(max_length=200)
description = forms.CharField(widget=forms.Textarea)
assign_to = forms.ChoiceField(widget=forms.Select(choices=[]))
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
user_email = self.user.email.split('@')[1]
super(AssignTask, self).__init__(*args, **kwargs)
self.fields['assign_to'] = forms.ChoiceField(choices=[(i.email, i.email) for i in User.objects.filter(is_active=True, email__icontains=user_email)])
我收到的错误是:
File "/home/gblp250/PycharmProjects/assignment/todoapp/views.py" in assign
118. assign_email = assign_now.cleaned_data('assign_to')
Exception Type: TypeError at /assign
Exception Value: 'dict' object is not callable
最佳答案
从错误回溯中,我们可以了解到,您缺少 .get()
函数
所以,试试这个,
assign_email = assign_now.cleaned_data<b>.get</b>('assign_to')
而不是
assign_email = assign_now.cleaned_data('assign_to')
<小时/>
完整的查看功能
@login_required
def assign(request):
if request.method == 'POST':
assign_now = AssignTask(data=request.POST, user=request.user)
if assign_now.is_valid():
task_title = assign_now.cleaned_data.get('title')
task_description = assign_now.cleaned_data.get('desc','Sample Description')
assign_email = assign_now.cleaned_data.get('assign_to')
user_details = User.objects.get(email=assign_email)
t = Task(title=task_title, description=task_description, assigned_to=user_details)
t.save()
return HttpResponse('<h2>Successfully assigned task</h2>')
else:
return HttpResponse('<h2><Task assignment failed/h2>')
else:
return HttpResponse('<h2>Request method error</h2>')
关于python - 如何从 Django 表单获取 ChoiceField 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54978012/
我是一名优秀的程序员,十分优秀!