我有用戶提交的內容,我試圖寫入一個文件,然後保存到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']))
這一切工作相對良好,但對於兩個問題:
1)ContentFile在我的字符串中的每個字母之間放一個空格,所以'test'
變成't e s t'
;
2)由於某種原因每次運行視圖時兩個Revision
實例保存的路徑大致相同。即。一個路徑將是'content/revisions/test.txt'
,另一個將是'content/revisions/test_1.txt'
,而第二個路徑根本不應該存在。
什麼給?
對於任何人來這個問題。我主要轉向更優雅的解決方案,但發現使用http://chronosbox.org/blog/jsonresponse-in-django?lang=en是複製我的對象實例的源代碼。奇怪,因爲我以前使用過這個模塊......但它似乎並沒有在這裏很好地工作。 – 2011-12-28 03:33:19