【发布时间】:2017-10-25 10:20:33
【问题描述】:
我有以下两种型号,
class user_files(models.Model):
Filename = models.CharField(max_length=50)
Browse = models.FileField(upload_to='img/')
user_uploaded = models.CharField(max_length=50, blank=True)
class share_files(models.Model):
select_file = models.CharField(max_length=300)
from_user = models.CharField(max_length=50)
select_user = models.CharField(max_length=50,default=None)
user_files 存储各个用户上传的文件。 和 share_files 存储共享文件名 yo user xx by user bb。
我想在模板中显示与登录用户共享的文件,
我在 view.py 中的功能是,
def user_files_all(request):
if not request.user.is_authenticated:
return render(request, 'accounts/logout.html')
else:
data = user_files.objects.filter(user_uploaded=request.user)
data1 = share_files.objects.filter(select_user=request.user)
data2 = user_files.objects.filter(Filename=data1.select_file,user_uploaded=data1.from_user)
args = {'data': data,'data1':data1}
return render(request, 'accounts/files.html', args)
但我收到线路错误, data2 = user_files.objects.filter(Filename=data1.select_file,user_uploaded=data1.from_user)
因为 data1 不存在属性 select_file。我想要来自 user_files 模型的所有用户和在 data1 中选择的文件名的数据。然后想在模板中渲染它。
如何做到这一点?需要帮助。
提前致谢。
【问题讨论】:
-
这是因为 .filter() 返回一个对象列表。您的 data1 是一个对象列表,因此您不能使用 data1.select_file。使用类似 data1[0].select_file.
标签: django django-models django-forms django-templates django-views