python - 调用 Python 对象时,模型中的 Django FileField 超出了最大递归深度

标签 python django django-models

我的模型:

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 方法。您可以通过向 FileFieldsave 方法提供额外的第三个参数来绕过它。

self.subtitles.save(filenameToSave, ContentFile("WEBVTT\n\n" + m), False)

看看:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.fields.files.FieldFile.save

关于python - 调用 Python 对象时,模型中的 Django FileField 超出了最大递归深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25407982/

相关文章:

python - Pyspark 显示最大值(S)和多重排序

python - 更改每页的项目数或使用 django 中的分页器查看 View 中的所有项目

django - 如何使 django 用户管理中的电子邮件字段成为必需

Django 无法导入模型

python - 计算时间顺序坐标之间的距离和速度

Python Dataframe 列表 - 如何使数组中的元素数量相等

python - MongoEngine fieldDoesNotExist错误,但实际上是

python - google-app-engine 的最佳全文搜索

Django Rest Framework PUT请求对唯一模型字段

Django:限制一对多关系中的关系数