Django - 如何为不同的BleachFields为Bleach指定不同的`Default Form Widget`?

时间:2013-11-03 08:44:52

标签: django django-models django-forms

假设这是博客的模型:

class Blog(models.Model):
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField(default=datetime.now)
    creator = models.ForeignKey(User)
    content = BleachField()

这是另一种模式:

class Status(models.Model):
    content = BleachField()
    pub_date = models.DateTimeField(default=datetime.now)
    creator = models.ForeignKey(User)

如何覆盖BleachField以针对不同的Textarea小部件使用不同的WYSIWYG编辑器?即,对于Status,他们将是另一个编辑,而Blog他们将是另一个。或者可以首先使用不同的WYSIWYG编辑器,然后在模板中使用漂白过滤器:

{% load bleach_tags %}

{{ some_unsafe_content|bleach }

任何帮助将不胜感激!谢谢。

2 个答案:

答案 0 :(得分:0)

您可以在定义模型表单时覆盖__init__方法吗?:

class BlogForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(BlogForm, self).__init__(*args, **kwargs)
        self.fields['content'].widget = forms.Textarea

答案 1 :(得分:0)

我遇到了同样的问题。

起初,我在创建自定义char字段方面遇到了麻烦,但后来意识到我可以做到这一点,效果很好:

class BlondeCharField(models.CharField, BleachField):
   pass

BleachField只需要覆盖pre_save ...