9
votes

Menus déroulants de pays / état / ville à l'intérieur de l'administrateur Django en ligne

J'ai une clé étrangère de la ville dans le modèle BusionBranc. Mon modèle de ville possède également des clés étrangères d'État et de pays pour les modèles d'État et de comté. Je passe du temps difficile à afficher des menus déroulants de l'État et des pays à l'intérieur de My Businessbranchinline. Quelle serait la meilleure façon de y parvenir? Ce serait génial si les déposées filtrent des éléments basés sur la valeur de son parent.

 Capture d'écran Django Admin


0 commentaires

3 Réponses :


0
votes

Vous voudrez peut-être regarder dans la création d'un widget de "adresse" personnalisé qui gère la cascade avec trois dérivations. Vous voudrez peut-être examiner le code source du widget DateTime pour obtenir des conseils à ce sujet.

En outre, consultez des didacticiels sur la création de widgets personnalisés, tels que Celui-ci .


0 commentaires

0
votes

Ce serait génial si les déposées filtrent des éléments basés sur la valeur de son parent.

Vous pouvez utiliser Machine de formulaire AJAX du DajaxProject pour cette partie


0 commentaires

24
votes

Avec un petit pirate, c'est assez faisable.

Dans l'exemple suivant, County Strong> est utilisé à la place de State Strong> et municipalité forte> de ville forte>. Donc, les modèles sont les suivants: P>

class LocationAdmin(admin.ModelAdmin):
    form = LocationForm
    class Media:
        js = ('http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js',
                '/site_media/js/municipality.js')

admin.site.register(Location, LocationAdmin)


3 commentaires

+1 pour une réponse aussi approfondie. Je vais faire quelque chose de similaire et que je n'utilise pas l'administrateur, cela devrait être d'une grande aide. Merci!


mimitype est (Django 1.6) obsolète. Je pense que vous devez le remplacer avec content_type .


Cela ne fonctionne pas avec Django 2. Premièrement, les champs FoundationyKey nécessitent le paramètre on__delete à spécifier. Deuxièmement, certaines importations et les noms de fonction ont changé.