2010-10-14 5 views
7

J'ai mis en place TinyMCE pour travailler avec le panneau d'administration (selon les instructions du Django Docs http://code.djangoproject.com/wiki/AddWYSIWYGEditor)Admin Django: Ajouter TinyMCE à TextField particulier seulement?

Le problème est que j'ai Inlines et d'autres zones de texte dans mon modèle pour lequel je ne veux pas TinyMCE

Est-ce que quelqu'un sait comment régler TinyMCE pour charger uniquement des champs particuliers dans mon modèle?

Merci

EDIT Ok, je l'ai installé donc django-tinymce et configurée

J'ai créé ce qui suit dans le admin.py du modèle avec le champ que je veux ajouter tinymce à:

class FooAdminForm(forms.ModelForm): 
    class Meta: 
     model = Foo 

    def __init__(self, *args, **kwards): 
     self.bar = forms.TextField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) 
     super(FooAdminForm, self).__init__(*args, **kwargs) 

Malheureusement, cela ne fonctionne toujours pas

Répondre

9

droit, si quelqu'un cherche à le faire (et est aussi désemparés que je suis!)

d'abord, assurez-vous que les paramètres de TinyMCE sont corrects (j'ai oublié ça!)

TINYMCE_JS_ROOT = '/media/tiny_mce/' 
TINYMCE_JS_URL = os.path.join(MEDIA_URL, "tiny_mce/tiny_mce_src.js") 
TINYMCE_DEFAULT_CONFIG = { 
    'plugins': "table,spellchecker,paste,searchreplace", 
    'theme': "advanced", 
} 
TINYMCE_SPELLCHECKER = True 

Puis, en l'admins.py de votre modèle

from django.forms import * 
from django.db.models import * 
from tinymce.widgets import TinyMCE 

class ProductionForm(forms.ModelForm): 
    some_field = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) 

    class Meta: 
     model = Production 

class ProductionAdmin(admin.ModelAdmin): 
    form = ProductionForm 
5

Tha La page du wiki a environ cinq ans (!) et de nos jours, il est beaucoup plus facile d'intégrer TinyMCE, en utilisant simplement le projet django-tinymce. Cependant, comme vous l'avez déjà fait de cette manière, vous pouvez réaliser ce que vous voulez en modifiant simplement le script textareas.js. La méthode décrite sur votre lien utilise mode: textareas, qui convertit toutes les zones de texte automatiquement. Ce que vous voulez est le suivant:

mode: "exact", 
element: "id_mytextarea", 

où « id_mytextarea » est l'ID HTML du champ que vous ne voulez convertir - généralement le nom du champ modèle préfixé par « id_ ». Voir le TinyMCE documentation.

+0

haha, j'ai effectivement utilisé le django-docs (sans vérifier la date) car je pense qu'ils seraient plus fiables. J'ai installé django-tinymce maintenant. J'ai besoin d'écraser le modèle de formulaire d'administration et écraser le champ que je veux utiliser le widget TinyMCE? –