2
我有一個形式獲取當前登錄的用戶,一些投入和文件:動態文件上傳路徑
class AddItemForm(ModelForm):
class Meta:
model = Item
exclude = ['user']
對於這種形式有一個觀點:
item_form = AddItemForm(request.POST, request.FILES)
if item_form.is_valid():
item = item_form.save(commit=False)
item.user = request.user
item.save()
對於此項目的文件字段,我正在使用upload_to功能。這裏是我的模式:
class Item(models.Model):
user = models.ForeignKey(User)
cover_image = models.FileField(upload_to=get_upload_path)
def get_upload_path(instance, filename):
return "items/user_{user_id}/item_{item_id}/{filename}".format(user_id=instance.user.id, item_id=instance.id,filename=filename)
的問題是,我不能看到當前實例ID,因爲下面一行的上傳路徑:
item = item_form.save(commit=False)
它沒有實例ID還沒有,而是當前項目的它創建user_1/item_NONE /文件
我該如何設置id到這個路徑?
在此先感謝
你不能爲一個新的紀錄'get_upload_path'使用'instance.id',因爲屬性尚未在該點分配。它只會在更新現有記錄時起作用。 – Brandon 2014-10-31 19:32:03