У меня есть пользовательское содержимое, которое я пытаюсь записать в файл, а затем сохранить в 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
сохраняются с примерно одинаковым путем.то есть.один путь будет 'content/revisions/test.txt'
, а другой будет 'content/revisions/test_1.txt'
, когда второй вообще не будет существовать.
Что дает?