django - 使用外键加入 Django
问题描述
我正在使用内置的用户模型。现在我想在我的模板first_name
、last_name
表格User
模型和timesheet_is_running
模型中显示TimesheetEntry
。
模型.py
class TimesheetEntry(models.Model):
timesheet_users = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_users')
timesheet_is_running = models.BooleanField(default=False)
class Meta:
db_table = "timesheet_entry"
视图.py
class ClockInOutUserListView(LoginRequiredMixin, generic.TemplateView):
template_name = 'admin/clock/clock.html'
def get_context_data(self, **kwargs):
context = super(ClockInOutUserListView, self).get_context_data(**kwargs)
company_name = self.request.user.userprofile.user_company
context['users'] = User.objects.exclude(
Q(userprofile__user_is_deleted = True) |
Q(userprofile__user_company__company_is_deleted=True) |
Q(userprofile__user_role__acl_role_title='Admin')
).filter(
Q(userprofile__user_company =company_name)
)
#for user in context['users']:
# job_user = TimesheetEntry.objects.get(timesheet_users=user)
#print(user.timesheet_entry_set.all())
return context
为了显示我正在使用get_context_data
哪个context['users']
正在打印我的用户first_name
和last_name
. 但我无法显示模型timesheet_is_running
中的内容。Jobs
所以我在想join
。
请帮助加入两个模型User
,TimesheetEntry
以便我可以在我的模板中显示
模板.html
{% for user in users %}
{{user.first_name}}
{{user.last_name}}
{{user.timesheet_is_running}} <!-- How can get this value in template -->
{% endfor %}
解决方案
如果您的用户只有一个条目,那么您可以直接在模板中添加它(如评论中所述)。为此,您可以这样做:
{% for user in users %}
{{user.first_name}}
{{user.last_name}}
{{user.timesheet_users.last.timesheet_is_running}}
{% endfor %}
或者,如果您有多个时间表条目,那么您也可以在模板中遍历所有这些条目:
{% for user in users %}
{{user.first_name}}
{{user.last_name}}
{% for entry in user.timesheet_is_running.all %}
{{entry.timesheet_is_running}}
{% endfor %}
{% endfor %}
推荐阅读
- r - R plot没有根据文档添加绘图颜色?
- c - 为什么我会收到错误消息:'awk: read error (Is a directory)'
- php - Laravel 8 实现 PHP 的 DOM XML 函数输出 XML
- javascript - 更改 Material UI 中的步骤时,垂直步进器应滚动到顶部反应
- css - 第二行和后续行没有在网格中指定全高
- python - 在一张图中绘制更多垂直密度图
- python-3.x - Python matplotlib 无法在椭圆曲线 y^2+x^3+x^2=0 上绘制 Acnode(孤立点)
- node.js - expressjs 返回具有相同标签的项目列表
- c# - C# Interop.Excel 找不到 dll
- php - Authorize.Net API 限制 1000 个结果。如何克服它?