私はオーディオファイルを取るdjangoモデルを持っています:
class Thing(models.Model):
audio_file = AudioFileField( upload_to=audio_dir, blank=True, null=True )
photo_file = models.ImageField( upload_to=img_dir, blank=True, null=True )
...
は、何らかの検証を実行AudioFileField
する のサブクラスです。FileField
class AudioFileField(models.FileField):
def validate(self, value, model_instance):
try:
if not (value.file.content_type == "audio/x-wav" or
value.file.content_type == "audio/amr" or
value.file.content_type == "video/3gpp"):
raise ValidationError(u'%s is not an audio file' % value)
except IOError:
logger.warning("no audio file given")
コールバックはパスをaudio_dir
設定し、ファイルの名前を変更します。
def audio_dir(instance, filename):
return os.path.join("audio", "recording_%s%s" % (
datetime.datetime.now().isoformat().replace(":", "-"),
os.path.splitext(filename)[1].lower() ))
Django REST フレームワークでは正常に動作しImageField
ますが、サブクラス化されたAudioFileField
ものは動作しません。これは、サブクラスserializers.FileField
がキーワード引数を受け入れないためupload_to
です。
API を介して同じ機能を公開するにはどうすればよいですか? コールバックはaudio_dir
私にとって特に重要です。