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 に答える