2015-10-08 3 views
0

Застряли здесь в течение 2 дней. Надеемся получить некоторое просветление. Код ошибки здесь: «Объект ввода» не имеет атрибута «get». Я очень подозреваю, что ошибка из-за forms.py. Я хочу, чтобы сделать dynammic список полей выбора там.Объект '' не имеет атрибута 'get' Ошибка

Model.py

from django import forms 
from django.forms import ModelForm 
from django.db import models 
from dupont.models import dupont 


class input(models.Model): 
    ... 
    Region=models.CharField(max_length=100) 

forms.py

from django import forms 
from django.forms import ModelForm 
from .models import input 
from anothermodel.models import A 
from django.contrib.auth.models import User 
import Queue 

class inputform(forms.ModelForm): 
    regionlist = forms.ChoiceField(label=u'Region',choices=()) 
    def __init__(self,*args,**kwargs): 
    super(inputform,self).__init__(*args,**kwargs) 
    self.fields['regionlist'] = forms.ModelChoiceField(queryset=anothermodel.objects.values('Region').distinct()) 

views.py

from django.http import HttpResponseRedirect 
from django.shortcuts import render,render_to_response,get_object_or_404 
from inputform.forms import inputform 
from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def input(request): 
    if request.method == 'POST': 
     form = inputform(request.POST) 
      if form.is_valid(): 
       return HttpResponseRedirect('templates/About') 
    else: 
     form = inputform() 

    return render_to_response('inputform.html', { 
     'form': form, 
    }) 

Часть HTML

<body> 
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> 
<form action="" method="post">{% csrf_token %} 

    {{ form.regionlist }} 
     {% for region in form.regionlist.choices %} 
      <option value="{{ val }}" {% ifequal data.val val %}selected {% endifequal %}> 
     {% endfor %} 

urls.py

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from metrics import views 
from django.views.generic.list import ListView 
from django.views.generic import TemplateView 
from django.conf import settings 
from django.conf.urls.static import static 
from inputform.views import input,ifglobal 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^login/',include('login.urls')), 
    url(r'^admin/', include(admin.site.urls)), 

    url(r'^input', 'inputform.views.inputform'), 
) 

Трекбэк

Traceback: 
File "C:\Python27\lib\site-packages\django-1.8.3 py2.7.egg\django\core\handlers\base.py" in get_response 
223.     response = middleware_method(request, response) 
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\middleware\clickjacking.py" in process_response 
    31.   if response.get('X-Frame-Options', None) is not None: 

Exception Type: AttributeError at /input 
Exception Value: 'inputform' object has no attribute 'get' 
+0

Правильно ли отпечаток в вашей форме? – Sayse

+0

Theres несколько вещей здесь отсутствует ... Ваша модель не имеет ссылки на модель, я не вижу, к чему относится 'form.choice_filed', и может делать с полной трассировкой стека – Sayse

+0

Вам нужно показать свои URL-адреса , Я сомневаюсь, что эта точка зрения действительно вызвана. –

ответ

0

Ошибка действительно в ваших URL-адресах. Ваш шаблон указывает на 'inputform.views.inputform', то есть на форму, а не на вид. Он должен быть 'inputform.views.input'.

+0

Génial ~! Большое спасибо, Даниэль. –

Смежные вопросы