use*_*841 5 python django model view django-queryset
我正在尝试使用 Django 在 QuerySet 中创建一个过滤器,该过滤器返回当前登录用户提交的最新实例。
到目前为止,我的 view.py 文件中有以下内容:
def transfer(request):
title = 'Transfers'
queryset = Transfer.objects.filter(user=request.user).latest('timestamp')
context = {
"title": title,
"queryset": queryset,
}
if request.method == "POST":
print request.POST
return render(request, "transfer.html", context)
Run Code Online (Sandbox Code Playgroud)
但是这会返回错误
类型错误:“传输”对象不可迭代
到目前为止,我的 models.py 文件如下所示:
from django.db import models
from django.contrib.auth.models import User
class Transfer(models.Model):
id = models.AutoField(primary_key=True)
user = models.ForeignKey(User)
amount = models.DecimalField(max_digits=10, decimal_places=2)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
Run Code Online (Sandbox Code Playgroud)
我的 html 文件通过以下方式调用 QuerySet:
{% if request.user.is_authenticated %}
<h2>Your Transfers</h2>
{% if queryset %}
{% for instance in queryset %}
<p>Amount: {{ instance.amount }} </p>
<p>User: {{ instance.user }} </p>
<p>Date: {{ instance.timestamp }}</p>
{% endfor %}
{% else %}
<h3>You have not made any transfers.</h3>
{% endif %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激!
latest返回单个对象:最新的对象。因此,您不再将可迭代的查询集传递给模板,而是传递一个自然无法迭代的单个实例。
目前还不清楚你想在这里做什么;也许您只需要删除 for 循环,然后直接引用实例即可。或者,如果您确实想要不同,您可以迭代,您可能希望删除调用latest并仅按反向时间戳进行排序。
| 归档时间: |
|
| 查看次数: |
7887 次 |
| 最近记录: |