2017-12-28 11 views
0

Wie füge ich in Djangos Admin-Panel fest codierte Links zur Formularseite eines Django-Modells hinzu (/ add/page). Dies sind Links zu Dokumentationen, die sich niemals ändern werden. Ich möchte, dass diese Links jedes Mal auf dem Formular als Referenz für den Benutzer angezeigt werden, um herauszufinden, welche Werte in die Felder eingegeben werden sollen.Django fügt hartcodierte href-Links zur Formularansicht eines Administratormodells hinzu

Benötige ich: Benutzerdefiniertes Feld? Eingebautes Feld bereits? Ändern Sie die Admin-Vorlagen irgendwie? Fügen Sie irgendwo eine Hilfsfunktion hinzu?

Ich beziehe mich nicht auf die "Änderungsliste" Ansicht; Ich verweise auf die Seitenansicht /change/ oder /add/, wenn Sie ein Objekt innerhalb eines Modells hinzufügen oder bearbeiten.

add links in Django admin model form

models.py

class DateRange(models.Model): 

    date_name = models.CharField(max_length=100) 
    adwords_name = models.CharField(max_length=100) 
    bingads_name = models.CharField(max_length=100) 

    def __str__(self): 
     return self.date_name 

forms.py

class DateRangeAdminForm(forms.ModelForm): 
    class Meta: 
     model = DateRange 
     fields = '__all__' 

admin.py

@admin.register(DateRange) 
class DateRangeAdmin(admin.ModelAdmin): 
    form = DateRangeAdminForm 
    list_display = ['date_name', 'adwords_name', 'bingads_name'] 

Antwort

1

change_form.html Erweiterung arbeiten konnte - Es werden oben Links hinzugefügt.

Erstellen Sie diese Datei in Ihrem Namensraum Vorlagenverzeichnis, hier bezeichnet als "Vorlagen-dir"

templates-dir/admin/myapp/daterange/change_form.html:

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

{% block object-tools %} 
    {{ block.super }} 
    <ul> 
     <li> 
      <a href="https://link1.com">Adwords documentation</a> 
     </li> 
     <li> 
      <a href="https://link2.com">Bing ads documentation</a> 
     </li> 
    </ul> 
{% endblock object-tools %} 

Relevante Dokumente:

https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#overriding-admin-templates

https://docs.djangoproject.com/en/2.0/howto/overriding-templates/#overriding-from-an-app-s-template-directory

+0

Ich muss so viel lernen. Danke für deine Zeit und Mühe. Dein Rat hat funktioniert. Kann ich Sie fragen, mein localhost Link zu dieser Seite ist: http: //127.0.0.1: 8000/admin/scorecards/date range/add/'. Ist der Grund dafür, dass alle Namespacings zur change_form.html gelangen, weil die Pfade dem admin entsprechen müssen? – Jarad

+0

Mein Verständnis ist, dass Admin-Vorlagen Namespaced von App und Modell sein können, so dass Sie Admin-Vorlagen für bestimmte Modelle/Apps überschreiben können, ohne andere zu stören (ich würde nicht sagen, die URLs sind der "Grund", obwohl sie ausgerichtet sind). Wenn Sie beispielsweise möchten, dass diese Links für jedes Modell in "myapp" angezeigt werden, können Sie die Datei in "templates-dir/admin/myapp/change_form.html" verschieben. – whp

Verwandte Themen