我一直在想着这样做的想法,但都没有奏效,所以我要提出想法。我有一个名为“列表”的模型,用户可以创建例如“睡眠”的模型,然后他们在其中选择列表之一的地方输入内容,例如可以增加价值8。祝您睡眠愉快!在该用户看到基于他(她)输入的数据的图形之后。所有这些都已经在起作用,但是我似乎找不到一种组织数据的方法。
我正在尝试执行此操作,因此列表“ sleep”将其所有值都调用到图形中,然后其他列表说“ money”显示其所有货币值。我正在使用chart.js绘制图形,我不在乎它们是否同时显示在屏幕上,或者是否一一对应,但出于某种原因,我无法正确调用这些查询集。唯一可行的方法是使用.all(),因为我有多个用户,因此无法使用。
型号:
class List(models.Model):
name = models.CharField(max_length=100, default="")
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='lists')
def __str__(self):
return self.name
class Meta:
unique_together = ['name', 'user']
class DataItem(models.Model):
data = models.IntegerField(default=0)
list = models.ForeignKey(List, on_delete=models.CASCADE, related_name='data_items')r code here
观看次数
@login_required
def app(request):
form = list_form
form2 = data_form
user = request.user.pk
user_lists = List.objects.filter(user=user)
context = {'user_lists': user_lists, 'form': form, 'form2': form2}
return render(request, 'MyApp/app.html', context)
@require_POST
def addItem(request):
form = list_form(request.POST)
if form.is_valid():
user = request.user
new_list = List(name=request.POST['text'], user=user)
new_list.save()
return redirect('/app/')
@require_POST
def addData(request):
form = data_form(request.POST)
if form.is_valid():
new_data = DataItem(data=request.POST['data'], list=List.objects.get(id=request.POST['selection']))
new_data.save()
return redirect('/app/')
“ addItem”添加一个列表(金钱和睡眠) “ addData”将一个值添加到所选列表中
我没有从哪里开始做我想要的东西的。我应该在主视图中过滤数据集吗?对此发表自己的看法并使用按钮进行调用? 如果您对如何实现这种功能有所了解,请具体说明,因为我对django并不陌生。谢谢:)
答案 0 :(得分:0)
我想您想获取用户创建的所有列表,然后为其创建图形。首先,我建议向DateTimeField()
模型添加DataItem
。例如:created = models.DateTimeField(auto_now_add=True)
。
然后,在视图中,您可以像这样获取用户列表的所有数据:
@login_required
def app(request):
form = list_form
form2 = data_form
user = request.user.pk
user_lists = List.objects.filter(user=user)
list_data = {}
for list in user_lists:
list_data[list.name] = DataItem.objects.filter(list=list)
context = {'user_lists': user_lists, 'form': form, 'form2': form2, 'list_data': list_data}
return render(request, 'MyApp/app.html', context)
这会将您需要的所有数据保存在列表数据中。如果您在回复的开头采纳了我的建议,也可以按created
对其进行排序,以按时间顺序排列。在模板中,您可以循环浏览此列表。键是列表的名称,值将是数据条目的查询集。