Python ';QueryDict&x27;对象没有属性';id';
在“面板”页面上,我有一个选项字段,其中包含上载的文档列表或我通常引用的“机器人”。此列表仅显示当前用户已上载的“机器人”Python ';QueryDict&x27;对象没有属性';id';,python,django,django-forms,Python,Django,Django Forms,在“面板”页面上,我有一个选项字段,其中包含上载的文档列表或我通常引用的“机器人”。此列表仅显示当前用户已上载的“机器人” panel\forms.py from django import forms import os from upload.models import Document #### RETRIEVE LIST OF BOTS UPLOADED BY CURRENT USER #### def get_files(user): bots = Document.ob
panel\forms.py
from django import forms
import os
from upload.models import Document
#### RETRIEVE LIST OF BOTS UPLOADED BY CURRENT USER ####
def get_files(user):
bots = Document.objects.filter(user=user.id)
file_list = []
for b in bots:
file_list.append((b.id,b.docfile))
return file_list
class botForm(forms.Form):
def __init__(self, user, *args, **kwargs):
super(botForm, self).__init__(*args, **kwargs)
self.fields['bot'] = forms.ChoiceField(choices=get_files(user))
这可以正常工作,并显示所有用户bot的列表。当我试图将这些值传递到“游戏”页面并在此处访问它们时,问题就出现了
game\views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from game.models import game
from game.forms import GameForm
from upload.models import Document
from panel.forms import botForm
import league
def RPS(request):
if request.method == 'POST': # If the request is a POST method...
if 'PanelPlay' in request.POST:
panel = botForm(request.POST)
if panel.is_valid():
print panel.cleaned_data['bot']
elif 'GamePlay' in request.POST:
form = GameForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
leagueOuput = []
leagueOutput = league.run(form.cleaned_data['bot1'],form.cleaned_data['bot2'])
newGame = game()
newGame.bot1 = leagueOutput[0]
newGame.bot2 = leagueOutput[1]
newGame.bot1wins = leagueOutput[2]
newGame.bot2wins = leagueOutput[3]
newGame.save()
return HttpResponseRedirect(reverse('game.views.RPS')) # Redirect after POST
form = GameForm() # An unbound form
results = game.objects.all() # Load messages for the list page
return render_to_response('game.html', {'results': results, 'form': form}, context_instance=RequestContext(request))
在尝试访问和验证面板数据时,出现以下错误
“QueryDict”对象没有属性“id”
指的是这一行
bots = Document.objects.filter(user=user.id)
我发现并阅读了许多类似的问题,但我似乎无法将它们的解决方案贯彻到我自己的项目中
提前感谢您提供的所有帮助。当您构建
botForm
时,您正在传递请求。POST
(查询信息)作为用户
参数。你是说
panel = botForm(request.user, data=request.POST)
?
(假设您使用的是django身份验证)。当您构建
botForm
时,您将request.POST
(一个QueryDict)作为用户
参数传递。你是说
panel = botForm(request.user, data=request.POST)
?
(假设您使用的是django身份验证)。请提供完整的堆栈跟踪。请提供完整的堆栈跟踪。您解决了我的问题,您这个漂亮的人。如果你看不出我不是很有经验,基本上是在我前进的过程中从各种来源拼凑起来的。你解决了我的问题,你这个漂亮的人。如果你说不出来,我不是很有经验,基本上是从资料中拼凑出来的。