我的模型:
class Movie(models.Model):
title = models.CharField(max_length=200)
description = models.CharField(max_length=1500)
publish_date = models.DateField()
file_1080p = models.FileField(upload_to=generate_filename_movie, validators=[validate_video])
file_720p = models.FileField(upload_to=generate_filename_movie_720)
file_480p = models.FileField(upload_to='temp/')
subtitles = models.FileField(upload_to=generate_filename_subtitle_movie, validators=[validate_subtitles])
already_converted = bool(False)
我的保存功能:
def save(self, *args, **kwargs):
if self.already_converted == False:
# todo convert files
self.already_converted = True
if self.subtitles.path.endswith('.srt'): # srt subtitle should process
import re
m = re.sub(r'([0-9]{2}:[0-9]{2}:[0-9]{2}),([0-9]{3})', r'\1.\2', self.subtitles.read())
from django.core.files.base import ContentFile
filenameToSave = generate_filename_subtitle_movie(0, self.subtitles.name)
self.subtitles.save(filenameToSave, ContentFile("WEBVTT\n\n" + m))
super(Movie, self).save(*args, **kwargs)
错误发生在这里:self.subtitles.save(filenameToSave, ContentFile("WEBVTT\n\n"+ m))
谢谢。
最佳答案
默认情况下,在 FileField
上调用 save
方法将触发其模型的 save
方法。您可以通过向 FileField
的 save
方法提供额外的第三个参数来绕过它。
self.subtitles.save(filenameToSave, ContentFile("WEBVTT\n\n" + m), False)
看看:
关于python - 调用 Python 对象时,模型中的 Django FileField 超出了最大递归深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25407982/