首页 > 解决方案 > 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

标签: pythondjangomodel

解决方案


推荐阅读