我有用户提交了我试图写入文件然后保存到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']))
这一切都很好,但有两个问题:
1)ContentFile在我的字符串中的每个字母之间放置一个空格,因此'test'
变成't e s t'
;
2)由于某种原因,每次我运行视图时,两个Revision
实例都以大致相同的路径保存。IE。当第二条根本不应该存在时,一条路径将是'content/revisions/test.txt'
,另一条路径将是。'content/revisions/test_1.txt'
是什么赋予了?