【发布时间】:2019-09-20 04:19:58
【问题描述】:
我正在尝试构建一个系统,让用户可以在 Django 后端上传他们的 CSV 文件。但是我遇到了一个问题,我只想向上传它的用户显示 CSV 文件。我在模型中创建了一个字段,可以跟踪上传文件的用户。这是我的一些代码。
CSV 文件模型:
class Data(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE,default=1)
filename = models.CharField(max_length=40,blank=False)
csv_file = models.FileField(upload_to='documents/',blank=False)
def __str__(self):
return self.filename
以及视图逻辑:
def accounts(request):
user = Data.objects.values('user')
if user == request.user:
main_data = Data.objects.all()
else:
main_data = ""
dict = {'main_data':main_data, 'name' : request.user.username}
return render(request, 'accounts.html',dict)
我只得到那个 else 值'main_data=""'。
【问题讨论】:
-
一个
OneToOneField?那么,每个用户只允许一个文件? -
是的,现在我专注于每个用户一个文件。
-
user = Data.objects.values('user')是一个返回 dict 值的查询集。您正在检查这是否是request.user。你的表达式永远不会评估为True -
@MarcellErasmus 那么,正确的做法是什么?
-
我认为处理这种特殊情况的限制比允许许多限制更复杂。但回到主题:设置一个
related_name并使用request.user中的那个。