擅长:python、mysql、java
<p>一个非常简单的方法是使用自定义验证器。</p>
<p>在应用程序的<code>validators.py</code>中:</p>
<pre><code>def validate_file_extension(value):
import os
from django.core.exceptions import ValidationError
ext = os.path.splitext(value.name)[1] # [0] returns path+filename
valid_extensions = ['.pdf', '.doc', '.docx', '.jpg', '.png', '.xlsx', '.xls']
if not ext.lower() in valid_extensions:
raise ValidationError(u'Unsupported file extension.')
</code></pre>
<p>那么在你的<code>models.py</code>中:</p>
<pre><code>from .validators import validate_file_extension
</code></pre>
<p>。。。使用表单域的验证程序:</p>
<pre><code>class Document(models.Model):
file = models.FileField(upload_to="documents/%Y/%m/%d", validators=[validate_file_extension])
</code></pre>
<p>另请参见:<a href="https://stackoverflow.com/questions/6460848/in-django-how-does-one-limit-file-types-on-file-uploads-for-modelforms-with-fil">How to limit file types on file uploads for ModelForms with FileFields?</a>。</p>