Ich frage mich gerade, wie ich einen Link ins django admin Interface bauen kann ohne die url zu hardcoden.
Ich möchte gern direkt zur Liste eines Modells sprigen. Ich dachte eigentlich seid newforms-admin würden named urls generiert werden. Wird es aber wohl nicht...
Jemand eine Idee?
[django] Wie link in's Admin Interace bauen?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das hast du mich IMHO falsch verstanden. Im übrigen geht's um django 1.0.x...
Ich hab mit contrib.admin.sites angesehen. In meine urls.py binde ich das auch richtig ein... Es geht darum, wie man ein url reverse to einem bestimmten punkt im django panel hinbekommt... Geht das erst ab django v1.1.x?
Ich hab mit contrib.admin.sites angesehen. In meine urls.py binde ich das auch richtig ein... Es geht darum, wie man ein url reverse to einem bestimmten punkt im django panel hinbekommt... Geht das erst ab django v1.1.x?
Es wurde irgendwann zwischen 1.0 und 1.1 eingeführt (http://code.djangoproject.com/changeset/9739), vlt hättest gleich sagen sollen was du verwendest
und ja da geht reverse, da urlresolvers verwendet werden... Wie die ganzen names sind siehst du in der Funktion get_urls von den Site und AdminOption objects...

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Nun geht's aber um die aktuelle django SVN trunk Version.
Das geht irgendwie nicht:
Ein {% url admin_dbpref_edit_form %} im Template, wirft auch nur ein NoReverseMatch...
Irgendwie scheint die urls einfach nicht mit den urls aus get_urls() aufgefüllt worden zu sein...
Jemand eine Idee???
Das geht irgendwie nicht:
Code: Alles auswählen
class PreferenceAdmin(admin.ModelAdmin):
def edit_link(self, instance):
""" For adding a edit link into django admin interface """
# http://docs.djangoproject.com/en/dev/ref/contrib/admin/#reversing-admin-urls
#admin_{{ app_label }}_{{ model_name }}_add
#print reverse("admin_dbpreferences_preference_add")
# wirft: NoReverseMatch
context = {
# wirft: NoReverseMatch:
"edit_url": reverse("admin_dbpref_edit_form", kwargs={"pk": instance.pk}),
"item": instance,
}
return render_to_string('dbpreferences/model_admin_edit_link.html', context)
edit_link.allow_tags = True
def edit_form(self, pk):
...mach was...
def get_urls(self):
urls = super(PreferenceAdmin, self).get_urls()
my_urls = patterns('',
url(r'^(?P<pk>\d+)/edit_form/$', self.admin_site.admin_view(self.edit_form),
name="admin_dbpref_edit_form")
)
return my_urls + urls
list_display = ("site","app_label", "form_name", "edit_link",)
Irgendwie scheint die urls einfach nicht mit den urls aus get_urls() aufgefüllt worden zu sein...
Jemand eine Idee???
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Mit:
Muß man die erweiterten ModelAdmin urls zusätzlich angeben? Dann macht doch get_urls() nicht wirklich Sinn, oder?
EDIT: Moment mal... Braucht man vielleicht genau dafür admin.autodiscover() ?
EDIT2: Auch mit einem admin.autodiscover() geht's nicht...
Code: Alles auswählen
(r'^%s/(.*)' % settings.ADMIN_URL_PREFIX, admin.site.root),
EDIT: Moment mal... Braucht man vielleicht genau dafür admin.autodiscover() ?
EDIT2: Auch mit einem admin.autodiscover() geht's nicht...
admin.site.root ist deprecated, wie ich schon ein paar Posts davor geschrieben habe, http://docs.djangoproject.com/en/dev/re ... ur-urlconf
EDIT:// Und damit es alle verstehen, es ist deshalb deprecated, weil mit admin.site.root die urlresolvers nicht funktionieren
EDIT:// Und damit es alle verstehen, es ist deshalb deprecated, weil mit admin.site.root die urlresolvers nicht funktionieren
