我是一个django新手试图完成上传/下载应用程序。我正在使用django-registration-redux用户reg / auth并具有以下简单模型。我已经阅读了文档,但还没有弄清楚如何查询用户的相关字段,即带有外键给用户的模型字段。 这是我的模特:
from django.contrib.auth.models import User
FileUploads(models.Model):
owner = models.ForeignKey(User)
docfile = models.FileField(nul=True)
docfileuuid = models.UUID()
我的问题是:拥有特定的用户名,如何查询他/她的文档文件列表?
我想要完成的是当用户登录并浏览视图时,我们称之为“localhost:/ yourfiles”,可以向他/她提供他的文件列表。
如果没有拥有外键的用户,我使用以下代码来检索所有上传文件的路径:
obj = FileUploads.objects.all
uploads = [i.docfile for i in]
现在我想要的是那些属于登录用户的文件,而不是所有的文档文件。
我阅读了文档并尝试了以下内容:
obj = User.objects.all()
obj.fileuploads_set.all()
但没有运气
答案 0 :(得分:3)
当用户登录您的应用程序时,您确实拥有request.user
在views.py中,
def file_list_view(request):
# This gives you list of file objects.
files = FileUploads.objects.filter(owner=request.user)
return render_to_response('my_template.html', {'files': files})
在模板文件中
<ul>
{% for file in files %}
<li>{{ file.file_name }}</li>
{% endfor %}
</ul>
希望这会有所帮助。
答案 1 :(得分:1)
您可以使用上下文字典创建简单的函数视图。由登录的当前用户过滤模型中的文件,您可以通过request.user
获取该文件。然后在您的模板中使用for循环打印用户拥有的所有文件URL,并使用{% empty %}
模板标记在用户没有上传任何文件时显示消息。
<强> views.py 强>
@login_required
def userfiles(request):
context_dict = {}
files = FileUploads.objects.filter(owner=request.user)
context_dict['files'] = files
return render(request, 'users_files.html', context_dict, )
模板:
{% for file in files %}
file.docfile.url
{% empty %}
You don't have any files uploaded yet.
{% endfor %}
答案 2 :(得分:1)
要通过查询用户名来获取属于用户的所有文件,请执行以下操作:
FileUploads.objects.filter(owner__usename='amir')
在views.py中,您可以这样做:
uploads = FileUploads.objects.filter(owner=request.user)