Django - FileField upload_to,包含来自其他字段主键的文件名

时间:2013-05-15 07:32:50

标签: django django-models

我有一个Django模型:

class ObservationMedia(models.Model):
    observation = models.ForeignKey(Observation)  
    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的超类)和ImageField,以便文件的名称是观察的主键,例如2465.jpg?据我所知,我只允许将'instance'和'filename'传递给upload_to,所以我不知道如何传递这个额外的参数。

1 个答案:

答案 0 :(得分:2)

您可以从实例中获取pk。像这样:

def get_audio_path(instance, filename):
   return os.path.join(audio_dir+instance.observation.pk+".jpg")

class ObservationMedia(models.Model):
   observation = models.ForeignKey(Observation)  
   audio_file = AudioFileField   ( upload_to=get_audio_path, blank=True, null=True )