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