2012-07-26 34 views
31

मुझे इसी तरह की त्रुटि के साथ मेरे मुद्दे का कोई समाधान नहीं मिल रहा है।ऑब्जेक्ट में कोई विशेषता नहीं है 'get'

त्रुटि है जब मैं संपादित करने की कोशिश वस्तु:

'इरादा' ऑब्जेक्ट कोई गुण नहीं है 'प्राप्त'

मैं form.as_p के साथ लाइन में यह है:

{% extends "layout.html" %} 
{% block content %} 
    <form action="{{ form_url }}" method="post">{% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Submit" /> 
    </form> 
{% endblock %} 

नियंत्रक कोड:

def edit(request, id): 
    if request.method == 'POST': # If the form has been submitted... 
     form = IntentionForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      # Process the data in form.cleaned_data 
      # ... 
      intention = form.save() 
      return HttpResponseRedirect(reverse_lazy('intention-show', args=[intention.id])) # Redirect after POST 
    else: 
     intention = Intention.objects.get(pk=id) 
     form = IntentionForm(intention) # An unbound form 

    return render_to_response('intentions/templates/form.html', 
           {'form': form, 'form_url': reverse_lazy('intention-edit', args=[intention.id])}, 
           context_instance=RequestContext(request) 
          ) 

क्या कोई मुझे कोई सलाह दे सकता है?

ट्रैकबैक:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/intentions/3/edit 

Django Version: 1.4 
Python Version: 2.7.3 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'intentions', 
'django.contrib.admin') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Template error: 
In template /home/marek/devel/django/prayer/intentions/templates/form.html, error at line 4 
    'Intention' object has no attribute 'get' 
    1 : {% extends "layout.html" %} 


    2 : {% block content %} 


    3 : <form action="{{ form_url }}" method="post">{% csrf_token %} 


    4 : {{ form.as_p }} 


    5 : <input type="submit" value="Submit" /> 


    6 : </form> 


    7 : {% endblock %} 


    8 : 

Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/marek/devel/django/prayer/intentions/views.py" in edit 
    55.         context_instance=RequestContext(request) 
File "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py" in render_to_response 
    20.  return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in render_to_string 
    176.   return t.render(context_instance) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 
    140.    return self._render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render 
    134.   return self.nodelist.render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render 
    123.   return compiled_parent._render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render 
    134.   return self.nodelist.render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render 
    62.    result = block.nodelist.render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render 
    84.    output = self.filter_expression.resolve(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve 
    571.     obj = self.var.resolve(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve 
    721.    value = self._resolve_lookup(context) 
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _resolve_lookup 
    772.        current = current() 
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in as_p 
    238.    errors_on_separate_row = True) 
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _html_output 
    143.   top_errors = self.non_field_errors() # Errors that should be displayed above all fields. 
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in non_field_errors 
    246.   return self.errors.get(NON_FIELD_ERRORS, self.error_class()) 
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _get_errors 
    115.    self.full_clean() 
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in full_clean 
    270.   self._clean_fields() 
File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _clean_fields 
    281.    value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) 
File "/usr/local/lib/python2.7/dist-packages/django/forms/widgets.py" in value_from_datadict 
    205.   return data.get(name, None) 

Exception Type: AttributeError at /intentions/3/edit 
Exception Value: 'Intention' object has no attribute 'get' 
+1

हां। पूर्ण ट्रेसबैक पोस्ट करें। –

+0

मैंने टिप्पणी के बिना – keram

+0

-1 प्रश्न संपादित किया? – keram

उत्तर

59

आपकी समस्या यहाँ है:

intention = Intention.objects.get(pk=id) 
form = IntentionForm(intention) # An unbound form 

एक फार्म के लिए पहला तर्क डेटा है, लेकिन आप उदाहरण गुजर रहे हैं। ठीक से उदाहरण पास करने के लिए आप का उपयोग करना चाहिए:

intention = Intention.objects.get(pk=id) 
form = IntentionForm(instance=intention) # An unbound form 
+3

मैं इसे कैसे याद कर सकता हूं, मैंने प्रलेखन 10 बार https://docs.djangoproject.com/en/dev/topics/forms/modelforms/ – max4ever

15

ऊपर जवाब सही है, तथापि, इस त्रुटि भी गलत तरीके से गुजर तर्क से एक रूप है, जो एक व्यवस्थापक मॉडल के लिए प्रयोग किया जाता है की init में उत्पन्न किया जा सकता है ।

उदाहरण:

class MyForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(self, *args, **kwargs) 

सूचना स्वयं के दोहरे गुजर? यह होना चाहिए:

class MyForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
+6

लाइव लंबे समय तक पढ़ा है। धन्यवाद। मेरे पास मेजबान तर्क के साथ समान टाइपो था। – Jay

+3

मैंने अभी इस उत्तर को खोजने के लिए घंटों की खोज की है, जिसने मुझे एक समान समस्या का संकेत दिया है।बहुत बहुत धन्यवाद! –

+1

यह मेरा मामला था, धन्यवाद आदमी! – Antiphon0x

1

Django में, सावधान रहें कि आप अपने विचारों और मॉडल का नाम कैसे लें।

मेरे मामले में, मैं models.py में यह था:

class Contact(models.Model): 
    ... 

views.py में, मैं था:

def contact(request): 
    ... 

फिर, urls.py में, मैं था:

from .views import Contact 

तो , मैं वास्तव में मॉडल वर्ग आयात कर रहा था, न कि संपर्क समारोह, इसलिए मेरी त्रुटि वा एस:

'Contact' object has no attribute 'get' 

उस ऑब्जेक्ट में get कोई विशेषता नहीं है। ऐसा लगता है कि views.py से model नहीं है।

संबंधित मुद्दे

 संबंधित मुद्दे