Comment ajouter des liens cliquables vers un champ dans Django admin?
J'ai ce admin.py
class LawyerAdmin(admin.ModelAdmin):
fieldsets = [
('Name', {'fields': ['last', 'first', 'firm_name', 'firm_url', 'school', 'year_graduated']}),
]
list_display = ('last', 'first', 'school', 'year_graduated', 'firm_name', 'firm_url')
list_filter = ['school', 'year_graduated']
search_fields = ['last', 'school', 'firm_name']
et je veux faire "firm_url" champs cliquable avec chacun de l'url indiquée dans le champ. Comment puis-je faire cela? Merci.
- À mon humble avis ceci devrait être la bonne réponse.
- De ce que je peux voir l'OP voulait des liens à l'extérieur de l'administrateur du site. Mais ce n'était pas mon cas, donc j'ai fini par utiliser
list_display_links
. - Non, @ViniciusSilva, that's pas la réponse à mon humble avis. L'OP veux un lien de la valeur de la
firm_url
évidemment, depuis, c'est une url. - Semble comme deux choses différentes, je suis venu ici via Google, et pour moi la réponse à l'aide de
list_display_links
a fait le tour.
Vous devez vous connecter pour publier un commentaire.
Définir une méthode personnalisée dans votre LawyerAdmin classe qui renvoie le lien HTML:
Voir la documentation.
firm_url = 'http://a.aa/<script>alert('hello');</script>'
?obj.firm_url
pourrait êtrehttp://example.com/<script>alert("I'm evil");</script>
mark_safe
au lieu deallow_tags
{{ obj.show_firm_url}}
et il ne fonctionne pas . Comment dois-je en tenir compte dans les modèles ?Utiliser le
format_html
utilitaire. Cela permettra d'échapper à tout code html de paramètres et de marque de la chaîne comme sûr à utiliser dans les templates. Leallow_tags
attribut de la méthode a été désapprouvée dans Django 1.9.Maintenant votre admin utilisateurs sont sûrs, même dans le cas de:
Voir la documentation pour plus d'info.
ajouter
show_firm_url
àlist_display
Vous pouvez le changer en attribuant short_description propriété:
Vous pouvez le manipuler dans le modèle, si vous préférez:
Dans models.py :
admin.py: