0

Relatif aux champs de clé étrangère dans l'Admin Django, l'élément par défaut d'affichage est une liste déroulante contenant tous les éléments de la clé étrangère du modèle associé. Je mon application, il contiendra des milliers d'articles et je cherche à changer l'interface d'administration et lui faire utiliser une zone de texte au lieu de la liste déroulante peuplée.Remplacer la liste déroulante de clé étrangère avec ajouter/modifier l'icône - Django

En cherchant la zone de texte avec l'icône d'ajout/édition à côté de lui, de sorte que nous n'obtenons pas de valeurs remplies, nous ajoutons ou éditons directement.

Y a-t-il un moyen de l'atteindre?

Répondre

0

Vous pouvez essayer d'utiliser un formulaire personnalisé et réaliser un widget personnalisé sur ce formulaire. (Je l'utilise pour cette desicion 3ème bibliothèque partie django_select2)

from django import forms 
from django_select2.forms import ModelSelect2Widget 


class KeyWidget(ModelSelect2Widget): 
    model = ModelToKey 
    search_fields = ['field__icontains'] 

    def label_from_instance(self, obj): 
     return u'{}'.format(obj.field) 


class CustomForm(forms.ModelForm): 

    class Meta: 
     model = ModelWithKey 
     fields = ('foreign_key_field') 
     widgets = { 
      'foreign_key_field': KeyWidget(attrs={'style': 'width:550px'}), 
      } 

En vous pouvez aussi surcharger le formulaire __init__ pour personnaliser queryset d'objets pour le choix dans ce domaine.

+0

Si 'django_select2' ne fait pas partie du paquetage Django, vous devriez peut-être préciser quel paquet installer et quelles sont les exigences. –