Прикручиваем tinymce к django. Я случайно наткнулся на такое исполнение прикручивания tinymce к django.
1. Создаем в папке проекта папку wysiwyg, а в ней файл __init__.py (код которого приведен ниже)
#!/usr/bin/python
# -*- encoding: utf-8 -*-
from django.db.models import Field
from django.forms import Textarea
from settings import MEDIA_URL
class WidgetWYSIWYG(Textarea):
def __init__(self, *args, **kwargs):
super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor vLargeTextField'}, *args, **kwargs)
class Media:
js = (
MEDIA_URL+'common/tiny_mce/tiny_mce.js',
MEDIA_URL+'common/filebrowser/js/TinyMCEAdmin.js',
)
class WYSIWYGField(Field):
def get_internal_type(self):
return "TextField"
def formfield(self, **kwargs):
defaults = {'widget': WidgetWYSIWYG}
defaults.update(kwargs)
return super(WYSIWYGField, self).formfield(**defaults)
2. Теперь мы можем создать свою модель и вместо поля models.TextField использовать WYSIWYGField. Смотрим код models.py ниже.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.db import models
import datetime
from wysiwyg import WYSIWYGField
# Create your models here.
class News(models.Model):
"""
Новости
"""
publish = models.BooleanField(verbose_name=u"Опубликовать", default=True)
created = models.DateField(verbose_name=u"Дата", default=datetime.date.today)
title = models.CharField(verbose_name=u"Заголовок", max_length=250)
preview = models.TextField(verbose_name=u"Краткое описание")
text = WYSIWYGField(verbose_name=u"Текст")
def __unicode__(self):
return self.title
class Meta:
ordering = ('-created',)
verbose_name = u"Новость"
verbose_name_plural = u"Новости"
