2015-02-28 5 views
5

Ich versuche, die change_form.html Vorlage eines meiner Modelle zu erweitern, um einige Informationen auf der Seite aufzunehmen. Ich habe die django Dokumentation in https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#overriding-vs-replacing-an-admin-templateProbleme erweitern change_form.html in django admin

gelesen Das Problem ist, dass auftritt:

NoReverseMatch bei/contas_pagar/pagamento/2/ umge für 'app_list' mit Argumenten '()' und Stichwort Argumente '{u'app_label': ''} 'nicht gefunden. 1 Muster (n) versucht: [ '(? P \ w +)/$']

Ich verwende Django 1.6.5 mit Django-Anzug 0.2.12

Das Fehlerbild: https://dl.dropboxusercontent.com/u/80415688/error_app_django.PNG

in my_project/my_app/templates/admin/my_app/my_model/change_form.html

{% extends "admin/change_form.html" %} 

in my_project/urls.py

urlpatterns = patterns('', 
    url(r'^contas_pagar/pagamento/(?P<id_parcela>\d+)/$', 
          'contas_pagar.views.retorna_pagamentos_parcela'), 
    # django urls 
    url(r'^doc/', include('django.contrib.admindocs.urls')), 
    url(r'', include(admin.site.urls)),) 

in my_project/views.py

def return_id(request, id): 
    data = { 'test': 'test', } 
    return render_to_response('admin/my_app/my_model/change_form.html', data, 
           context_instance=RequestContext(request)) 

Hat jemand eine Ahnung, wie zu lösen?


UPDATE:
Ich habe einige Änderungen an dem Code.
Die Ansicht ist in meiner Klasse ModelAdmin.

in my_project/my_app/templates/admin/my_app/my_model/change_form.html:

{% extends "admin/change_form.html" %} 
{% block after_field_sets %}{{ block.super }} 
    <h2>{{ test }}</h2> 
{% endblock %} 

in my_project/my_app/admin.py:

class PagamentoAdmin(admin.ModelAdmin): 
form = PagamentoForm 
model = Pagamento 
list_display = ('id', 'parcelas_contas_pagar', 'data', 'valor') 

def get_urls(self): 
    urls = super(PagamentoAdmin, self).get_urls() 
    my_urls = patterns('', 
     (r'(?P<id_parcela>\d+)/$', self.admin_site.admin_view(self.retorna_pagamentos_parcela)), 
    ) 
    return my_urls + urls 

def retorna_pagamentos_parcela(self, request, id_parcela): 
    data = { 
     'test': test, 
     'opts': self.model._meta, 
     'app_label': self.model._meta.app_label, 
     'change': True, 
     'add': False, 
     'is_popup': False, 
     'save_as': False, 
     'has_delete_permission': False, 
     'has_add_permission': False, 
     'has_change_permission': True 
    } 
    return render_to_response('admin/contas_pagar/pagamento/change_form.html', data, context_instance=RequestContext(request)) 

Nicht mehr Fehler auftreten. Nur die Felder meiner Klasse Admin werden nicht angezeigt.

Antwort

9

change_form.html enthält die folgende URL-Tag:

{% url 'admin:app_list' app_label=opts.app_label %} 

So sollten Sie die opts Variable in die Vorlage Kontext übergeben:

data = {'test': 'test', 
     'opts': MyModel._meta} 

UPDATE: Die change_form.html Vorlage verwendet die {% submit_row %} Vorlage markieren, die benötigt einige andere Kontextvariablen, so dass das data Wörterbuch wie folgt aussehen sollte:

data = {'test': 'test', 
     'opts': MyModel._meta,  
     'change': True, 
     'is_popup': False, 
     'save_as': False, 
     'has_delete_permission': False, 
     'has_add_permission': False, 
     'has_change_permission': False} 
+0

Hallo Freund, danke für deine Antwort. Ich habe die Änderung in meinem view.py vorgenommen. Er ESSO Fehler ausgegeben ... Aber dann ein weiterer Fehler war ... [link] (siehe https://dl.dropboxusercontent.com/u/80415688/error_change_django.PNG) konnte ich nichts finden darüber. Irgendeine Idee von diesem Fehler? –

+0

Amazing @catavaran, Das war das Problem, es war notwendig, einige Variablen gibt es mehr in den Kontext ist :) Aber wenn Sie mir mit einer letzten Frage helfen können ... Ich habe versucht, nach Ihrer Antwort und ich zu tun war nicht erfolgreich ... Die Felder meines Formulars wurden nicht zusammen mit meiner Anpassung wiedergegeben. Sie erscheinen einfach nicht. Ich muss etwas mehr Variable im Kontext zur Verfügung stellen? Erweitern Sie eine Methode von ModelAdmin? –

+0

Zeigen Sie Ihre Ansicht und Vorlage. – catavaran

2

Dies wird höchstwahrscheinlich verursacht, weil Sie ein {% url %}-Tag haben, das versucht, mit der app_list zu verknüpfen. Es könnte in Ihrer Admin/form_change.html oder in einer anderen enthaltenen/erweiterten Vorlage sein.

Dies ist in der Regel durch den Kontext verursacht, die nicht korrekt so übergeben wird, als ob Sie einen Tag haben, die wie {% url 'app_list' %} oder {% url 'app_list' var %} aussieht und die var leer.

+0

Danke für die Antwort, mein Freund. Fehlende Bewegung in den Kontext opt ​​Variable. Aber immer noch zeigt der Fehler in der Antwort sagte ich @catavaran gegeben. Haben Sie eine Idee, was sein kann? –