ファイルに書き込もうとしているコンテンツをユーザーが送信し、FileField
.
だから私は次のようなモデルを持っています:
class Revision(models.Model):
def custom_revision_file_path(instance, filename):
return '/'.join(['content/revisions', filename])
path = models.FileField(upload_to=custom_revision_file_path)
document = models.ForeignKey(Document)
...
インスタンスを作成するビューは次のようになります。
def handle_revisions(request):
document = Document.objects.get(id=request.GET['docid'])
basename = os.path.basename(str(document.path))
revision = Revision.objects.create(
document = document,
)
revision.path.save(basename, ContentFile(request.GET['revision']))
これはすべて比較的うまく機能しますが、次の 2 つの問題があります。
1) ContentFileは、文字列の各文字の間にスペースを入れるので、;'test'
になります。't e s t'
2) 何らかの理由で、ビューを実行するたびに、2 つのRevision
インスタンスがほぼ同じパスで保存されます。すなわち。1 つのパスは存在'content/revisions/test.txt'
し、もう1 つのパスは'content/revisions/test_1.txt'
2 番目のパスがまったく存在しない場合です。
何を与える?