J'ai un widget personnalisé que je voudrais mettre à la disposition d'une page d'administration Django. Ceci est facilement implémenté en utilisant l'attribut formfield_overrides
d'une sous-classe ModelAdmin
, et en utilisant la classe enfant Media
, je peux définir le JavaScript et le CSS nécessaires pour ce widget. Cela fonctionne plutôt bien. Le seul problème est que mon widget personnalisé nécessite MooTools pour fonctionner correctement, ce qui semble entrer en conflit avec jQuery et casse les widgets Django Admin par défaut (à savoir les sélecteurs de date et d'heure).Widgets personnalisés utilisant MooTools sur les pages d'administration de Django
Je pense que MooTools et jQuery modifient Object.prototype
, et puisque MooTools est chargé après jQuery, il semble que ce soit en train de surcharger les modifications de jQuery. DateTimeShortcuts.init()
, qui est responsable du rendu des boutons du sélecteur de date et d'heure, n'est pas appelé automatiquement si MooTools est chargé.
Je suis en quelque sorte dans un pickle ici, parce que je veux être en mesure d'utiliser les widgets d'administration intégrés, mais mon widget personnalisé est tout aussi important, sinon plus. Le widget est utilisé dans toute mon application, qui utilise MooTools, donc je ne peux pas changer de frameworks, et je préfère ne pas maintenir deux widgets qui effectuent la même fonction en utilisant des frameworks différents. Est-ce que quelqu'un a des suggestions sur comment je peux autour de ce conflit?
Merci pour votre réponse; après si longtemps, j'avais peur que personne ne s'avance. J'utilise MooTools 1.2.4. Mon code vérifie si la fonction '$' a un attribut 'noConflict', et si c'est le cas, l'appelle et ré-implémente la fonction MooTools. La seule raison pour laquelle je soupçonnais 'Object.prototype' d'être modifié était parce que je ne trouve nulle part la méthode' DateTimeShortcuts.init() 'est appelée, donc j'ai supposé que jQuery était responsable. J'ai depuis longtemps enlevé ceci de mon code de base, mais j'essaierai encore en utilisant vos autres suggestions. – AdmiralNemo