擅长:python、mysql、java
<p>使用rajasimon的答案,有一个方法来处理模型中的所有<code>FileField</code></p>
<pre><code>class MyModel(models.Model):
file_field = models.FileField(upload_to=upload_to, blank=True, null=True)
def save(self, *args, **kwargs):
if self.id is None:
saved = []
for f in self.__class__._meta.get_fields():
if isinstance(f, models.FileField):
saved.append((f.name, getattr(self, f.name)))
setattr(self, f.name, None)
super(self.__class__, self).save(*args, **kwargs)
for name, val in saved:
setattr(self, name, val)
super(self.__class__, self).save(*args, **kwargs)
</code></pre>
<p>此外,我们可以使文件位置动态化,即不仅基于自身id,但也在外键的id上。只需迭代字段并检查路径是否已更改。在</p>
^{pr2}$