Django: модель с несколькими связанными полями одного типа - PullRequest
0 голосов
/ 15 апреля 2011

Я использую Django. У меня есть модель Fixture, которая выглядит примерно так:

class Fixture(models.Model):
    home_team = models.ForeignKey(Team, related_name="home_fixture_set")
    home_score = models.IntegerField(max_length=2, blank=True, null=True)
    away_team = models.ForeignKey(Team, related_name="away_fixture_set")
    away_score = models.IntegerField(max_length=2, blank=True, null=True)
    when = models.DateTimeField()

У меня есть модель команды, которая выглядит примерно так:

class Team(models.Model):
    name = models.CharField(max_length=60)
    club = models.ForeignKey(Club)

Я могу получить доступ к списку "домашних" приспособлений для конкретной команды с помощью home_fixture_set related_name:

my_team.home_fixture_set.all()

Я могу получить доступ к "отсутствующим" приборам аналогичным образом. Тем не менее, я не знаю, как объединить два и получить список всех матчей, в которых участвует эта команда? Например:

my_team.home_and_away_fixture_set.all()

Обратите внимание, что home_and_away_fixture_set должен возвращать набор запросов, чтобы я мог отфильтровать его:

my_team.home_and_away_fixture_set.filter(when__lte=datetime.datetime.now())

Возможно ли это сделать через API запроса модели? Если нет, то возможно ли это сделать достаточно легко с помощью запроса Manager.raw ()?

Спасибо Jay

1 Ответ

2 голосов
/ 15 апреля 2011
from django.db.models import Q
home_and_away_fixtures = Fixtures.objects.filter(Q(home_team=team)|Q(away_team=team))

или edit :

home_and_away_fixtures = my_team.home_fixture_set.all() | my_team.away_fixture_set.all()

thx shadfc: также один запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...