我有一个用户列表。
每个用户都有一个合同历史记录,所有合同都存储在同一表中。
每个用户都有1个当前处于活动状态的合同。
我正在尝试在用户列表中显示当前有效合同的一些详细信息。
型号:
class Contract(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
contract_start = models.DateField(null = True, blank = True)
contract_end = models.DateField(null = True, blank = True)
查看:
def get(self, request):
users = User.objects.all()
date_today = timezone.now().date()
active_contract = Contract.objects.filter(contract_start__lte=date_today, contract_end__gte=date_today)
return render(request, 'user/list.html', {
'users': users,
'active_contract': active_contract,
})
模板:
{% for user in users %}
<tr>
<td>{{ user.last_name }}</td>
<td>{{ user.first_name }}</td>
<td>{{ user.employee.location }}</td>
<td>{{ ?? }}</td>
</tr>
{% endfor %}
在另一个有一个用户的视图中,我可以将user_id = id
添加到过滤器中,并且可以显示所需的详细信息。我似乎无法在我的用户列表中使用它。
答案 0 :(得分:0)
如果您确定每个用户都有一份有效合同,则可以
def get(self, request):
date_today = timezone.now().date()
active_contracts = Contract.objects.select_related('user').filter(contract_start__lte=date_today, contract_end__gte=date_today)
return render(request, 'user/list.html', {
'active_contracts': active_contracts,
})
模板
{% for contact in active_contracts %}
<tr>
<td>{{ contact.user.last_name }}</td>
<td>{{ contact.user.first_name }}</td>
<td>{{ contact.user.employee.location }}</td>
<td>{{ contact.contract_start }}</td>
</tr>
{% endfor %}