python - Django:从两个 OneToOne 字段的模型中获取 QuerySet
问题描述
我有以下一组模型:
from django.db import models
from django.db.models import CASCADE
class Battle(models.Model):
idBat = models.UUIDField(primary_key=True)
# other attributes...
class Participant(models.Model):
idPar = models.UUIDField(primary_key=True)
# other attributes...
class Event(models.Model):
participant1 = models.OneToOneField(Participant, CASCADE, related_name='%(class)s_par1')
participant2 = models.OneToOneField(Participant, CASCADE, related_name='%(class)s_par2')
battle = models.ForeignKey(Battle, CASCADE, related_name="%(class)s_battle")
# other atributes...
但是从一个角度来看,我希望从我从表格中获得的上述战斗中获得所有参与者。因此,我知道我可以通过以下方式从战斗中获得所有事件:
battle = form.cleaned_data['selected_battle']
events = battle.event_set
participants = # now what??
如上所示,我不知道如何从战斗的每个事件中正确获取所述参与者。需要明确的是,我可以保证会有重复的参与者,因为一个事件包括participant1/2
其中一个杀死另一个之间的战斗,而战斗是所述事件的连续,直到一个参与者保持胜利,因此事件的每个幸存者都会出现再次在战斗中的另一个事件中。
我希望在没有上述重复的情况下获得所有参与者,并可能使用 重新排序和切片,因此在标题QuerySet.order_by(...)[0:N]
中提到。QuerySet
解决方案
推荐阅读
- statistics - 仅使用 x 轴变量匹配两个直方图的算法
- c# - xamarin 表单图像不显示
- kendo-ui - Kendo UI 将 datePicker 绑定到列
- amazon-web-services - AWS System Manager 启动会话:调用 StartSession 操作时发生错误 (TargetNotConnected):
未连接 - java - 具有泛型约束的 C# 方法重载
- c# - C# 中的字段不能是通用的吗?
- ansible - ansible:我没有收到任务的完整错误消息
- jquery - $(...).intercode 不是函数 Phone.js
- amazon-web-services - Terraform - 启用访问负载均衡器日志 InvalidConfigurationRequest:存储桶的访问被拒绝
- javascript - “不可迭代”使用钩子从单独的文件夹进行 API 调用