2010-05-18 2 views
3

J'ai obtenu un modèle avec 2 champs: latitude et longitude. En ce moment, ils sont 2 CharFields, mais je veux faire un widget personnalisé pour le mettre en admin - pensait à l'affichage de Google Maps, puis obtenir les coordonnées du marqueur.Comment obtenir un seul widget pour définir 2 champs dans Django?

Mais puis-je avoir 1 widget (une seule carte) pour définir 2 champs différents?

Répondre

1

Définir les champs lat et long sur votre formulaire; définissez-les pour utiliser HiddenInputWidget.

Après l'init de votre formulaire, ajoutez un autre champ qui contient votre widget personnalisé qui prend deux valeurs.

Dans la méthode propre pour ce champ supplémentaire, définissez les valeurs de self.cleaned_data [ « de latitude »] et self.cleaned_data [ « lng »]

Il existe des moyens probablement plus propres, mais il devrait fonctionner

1

J'ai utilisé la méthode full_clean pour le fractionnement des données. L'utilisation de la méthode clean_FIELD est trop tardive.

0

J'ai fini par définir un formulaire personnalisé sur mon admin avec un champ supplémentaire non requis qui avait un widget qui contrôle la carte et la définition d'un widget de cartes de ce comme stevejalim. Cependant je n'ai pas caché les champs d'entrée puisqu'ils étaient encore dans la vue et cela ne me dérange pas de les voir. Il serait probablement plus propre de remplacer le modèle pour éditer ce modèle à la place et de mettre en place une carte, mais cela semblait être beaucoup de travail pour quelque chose qui devrait être simple.

Une solution serait si Django permis pour les champs de modèles complexes où un champ de modèle correspond à plusieurs colonnes db mais ce n'est pas encore pris en charge (voir https://code.djangoproject.com/ticket/5929)

L'autre serait si Django ne nous laisser utiliser un champ de formulaire cela correspond à deux champs de modèle, mais il ne semble pas y avoir de moyen d'accomplir cela et je ne peux pas trouver de ticket pour cela.

Questions connexes