【发布时间】:2020-05-27 18:01:20
【问题描述】:
我有 5 个模型与这样的外键链接:
Section (Registration.section)
^ 1
|
v ∞
Registration < ∞ --- 1 > Event (Registration.event)
^ ∞
|
v 1
User (Registration.user, Profile.user)
^ 1
|
v 1
Profile
从这些链接模型中,我尝试在这样的表中显示数据:
| ID | Other Profile fields | Section1 | Section2 | SectionN |
|----------------|-------------------------|------------------------------|-----------------------------|----------|
| user1.username | eg. user1.profile.grade | Registration.objects.get( | Registration.objects.get( |
| section=Section1, | section=Section1, |
| user=user1 | user=user1 |
| ).event | ).event |
|----------------|-------------------------|------------------------------|-----------------------------|----------|
| user2.username | user2.profile.grade | ...event |None (needs to handle this) |
|----------------|-------------------------|------------------------------|-----------------------------|----------|
| user3.username | user3.profile.grade | None (needs to handle this) |None (needs to handle this) | |
每个用户都有不同的行。我无法弄清楚如何有效地做的是获得每个部分的注册。
我可以通过在 python 中使用字典和循环等手动操作数据来做到这一点,但这非常低效,如果用户列表太大,我的服务器在完成该过程之前就会超时。
我需要创建什么查询集结构才能在模板中输出这样的数据?
每个部分的每个用户只有一个注册对象:
class Registration(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
section = models.ForeignKey(section, on_delete=models.CASCADE)
class Meta:
unique_together = ("event", "user", "section")
【问题讨论】:
标签: python django django-queryset