Django自定义文件编辑器字段

时间:2012-10-20 09:57:49

标签: django django-models

我想在django中创建一个自定义字段,用于为普通文本文件编辑器建模,但与文件系统而不是数据库进行交互。

例如:

class FileEditorField(models.TextField):
    #...

class Params(models.Model):
    name = models.CharField(max_length=100)
    config = FileEditorField(path='/path')

FileEditor 会从/向文件系统读取/保存值。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:3)

奥莱特!事实证明这比我想象的要容易。我们的想法是创建一个新的自定义模型字段(docs),如下所示:

class FileEditorField(models.TextField):

    def __init__(self, *args, **kwargs):
        self.path = kwargs.get('path', '/')
        if 'path' in kwargs: kwargs.pop('path')
        kwargs['null']=True
        kwargs['blank']=True
        return super(FileEditorField, self).__init__(*args, **kwargs)

    def value_from_object(self, obj):
        return open(self.path).read()

    def save_form_data(self, instance, data):
        f = open(self.path, 'wb')
        f.write(data)