ファイルに書き込もうとしているコンテンツをユーザーが投稿してからFileField
に保存しました。Django FileField.save()は重複ファイルを作成します
ので、私はこのようになりますモデルあります
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
インスタンスがほぼ同じパスで保存されます。すなわち、 2つ目のパスが全く存在してはならない場合、一方のパスは'content/revisions/test.txt'
になり、もう一方のパスは'content/revisions/test_1.txt'
になります。
何がありますか?
この質問には誰でも来てください。私は主により洗練されたソリューションに移行しましたが、http://chronosbox.org/blog/jsonresponse-in-django?lang=enを使用すると、オブジェクトインスタンスを複製するソースが見つかりました。以前はこのモジュールを使っていたので奇妙ですが、ここでうまく動作していないようです。 –