我希望为每个用户创建一个新目录。该模型的代码如下所示,应该看起来像这样。如何访问注册期间创建的当前用户名?我放了一个占位符函数getcurrentusername(),它应该返回一个字符串,这样为图像创建的目录就是username / profile_images /
class UserProfile(models.Model):
user = models.OneToOneField(User)
website = models.URLField(blank=True)
picture = models.ImageField(upload_to=getcurrentusername()+'\profile_images', blank=True)
def __unicode__(self):
return self.user.username
在forms.py
中class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('picture',)
在views.py
中profile_form = UserProfileForm(data=request.POST)
...
profile = profile_form.save(commit=False)
profile.user = user
...
if 'picture' in request.FILES:
profile.picture = request.FILES['picture']
profile.save()
答案 0 :(得分:0)
upload_to的方法有2个参数:instance和filename。因此,您可以从实例中获取用户名,例如:
def getcurrentusername(instance, filename):
return "/dir/dir/{0}/{1}".format(instance.user.username, filename)
class UserProfile(models.Model):
...
picture = models.ImageField(upload_to=getcurrentusername)
当Django保存你的图片时,它会调用getcurrentusername并传递它所需的参数。