[英]Django how to get username in models.py?
I need to get username in my models.py file 我需要在我的models.py文件中获取用户名
this part of model: 模型的这一部分:
X = models.FileField(max_length=255, upload_to=get_upload_file_name, blank=True)
calls this function: 调用此函数:
def get_upload_file_name(instance, filename):
return "uploaded_files/%s_%s" % (str(time()).replace('.','_'), filename)
but I would like to add username to the filename. 但我想在文件名中添加用户名。 Could anyone suggest me how do i request username and get as a string in this case? 在这种情况下,有人可以建议我如何请求用户名并以字符串形式获取吗?
UPDATE: 更新:
@login_required
def addnew(request):
if request.POST:
form = PForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/all')
else:
form = PForm()
args = {'full_name': request.user.username}
args.update(csrf(request))
args['form'] = form
return render(request, 'addnew.html', args)
get_upload_file_name
的第一个参数instance
是文件所属的模型实例,如果该模型具有username
get_upload_file_name
段,则可以通过以下方式简单地访问: instance.username
Based on your update, following code in your views.py
should allow you to pass the username before calling save() on the object: 根据您的更新, views.py
以下代码应允许您在对对象调用save()之前传递用户名:
...
if form.is_valid():
obj = form.save(commit=False)
obj.YOUR_FILE_FIELD = obj.get_upload_file_name(request.user, filename)
obj.save()
...
Note that form.save(commit=False)
will return you an object, which is not saved to the DB yet ( https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method ) 请注意form.save(commit=False)
将返回一个对象,该对象尚未保存到数据库中( https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-方法 )
The get_upload_file_name
method on the model itself needs to be updated like this: 需要对模型本身的get_upload_file_name
方法进行如下更新:
def get_upload_file_name(username, filename):
return "uploaded_files/%s_%s_%s" % (username, str(time()).replace('.','_'), filename)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.