我想在django中创建一个自定义字段,用于为普通文本文件编辑器建模,但与文件系统而不是数据库进行交互。
例如:
class FileEditorField(models.TextField):
#...
class Params(models.Model):
name = models.CharField(max_length=100)
config = FileEditorField(path='/path')
FileEditor 会从/向文件系统读取/保存值。
最简单的方法是什么?
答案 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)