1

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

例如:

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

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

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

最简单的方法是什么?

4

1 回答 1

4

好的!事实证明这比我想象的要容易。这个想法是创建一个新的自定义模型字段(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)
于 2012-10-20T12:17:08.317 回答