我想在模板:
上做类似的事情{% for account in integrations %}
<tbody>
<tr>
<td>#</td>
<td>
<p>{{ account.label }}</p>
</td>
</tr>
</tbody>
{% endfor %}
我的views.py文件:
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .forms import NewIntegrationForm
from modules import auth
from models import Worker
# Create your views here.
@login_required
def integrations(request):
user = request.user
all_integrations = Worker.objects.filter(user=user)
if all_integrations != 0:
return render(request,
'integrations/index.html',
{'section': 'integrations', 'integrations': zip(all_integrations)})
我的models.py文件:
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
import uuid
# Create your models here.
class Worker(models.Model):
user = models.ForeignKey(User,
on_delete=models.CASCADE,
)
a_key = models.CharField(max_length=255)
a_secret = models.CharField(max_length=255)
label = models.CharField(max_length=255)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
def __str__(self):
return self.id
我的网页返回结果,但它是空的。即一行,但account.label为空。此外,如果我不压缩,它会显示10个空行,而只有一个对象。
答案 0 :(得分:1)
您的观点应该是:
return render(request, 'integrations/index.html',
{'section': 'integrations',
'integrations': Worker.objects.filter(user=user)})
您的模板应该是:
{% if integrations %}
<table>
<thead>
<tr>
<th>#</th>
<th>Label</th>
</tr>
</thead>
<tbody>
{% for account in integrations %}
<tr>
<td>{{ forloop.counter }}</td>
<td>
<p>{{ account.label }}</p>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<strong> No records returned </strong>
{% endif %}
答案 1 :(得分:0)
你有两个问题。
首先,您使用的是zip
。这没有任何意义,你应该放弃它。
其次,在您访问account.link
的模板中。您的集成模型没有link
字段,因此始终为空。您需要在该模型上使用实际字段或方法。
答案 2 :(得分:0)
使用zip
{% for account in integrations %}
<p>{{ account.0.label }}</p>
{% endfor %}
没有zip
{% for account in integrations %}
<p>{{ account.label }}</p>
{% for manyy in account.many_to_many_field.objects.all %}
{{ manyy.somefield }}
{% endfor %}
{% endfor %}
答案 3 :(得分:0)
我要做的第一件事是在管理员面板中进行双重检查,如果你没有工人用这个带有空标签的user_id注册,并认为它只有一个记录
如果您的查询只返回一个worker,那么worker table将只映射到一个用户(除非他们可以在不同的项目中工作)
你应该改变
all_integrations = Worker.objects.filter(user=user)
到
all_integrations = Worker.objects.get(user=user)
尝试简单的打印集成而不循环查看返回的内容,使用zip并且不检查不同的行为,我建议不要使用zip