Как проверить сущность, у которой нет атрибута в таблице - PullRequest
1 голос
/ 06 августа 2010

В моем заявлении мне нужно проверить посещаемость людей и узнать, кто не участвовал в двух или более встречах. У меня есть следующие модели:

class Talk(models.Model):
    title = models.CharField(max_length=200, primary_key=True)
    speaker = models.CharField(max_length=200)
    date_of_talk = models.DateField('date_of_talk')

    def __unicode__(self):
        return self.title

class Member(models.Model):
    name = models.CharField(max_length=200)
    talks = models.ManyToManyField(Talk, through='Event_Attendance')

    def __unicode__(self):
        return self.name

class Event_Attendance(models.Model):
    talk = models.ForeignKey('Talk')
    membersAttended = models.ForeignKey('Member')

Как видите, я отслеживаю всех участников, участвующих в переговорах.

Мои мысли о том, как найти участников, которые не посещали, состояли в том, чтобы собрать всех участников, а затем перебрать их, чтобы выяснить, находятся ли они в таблице Event_Attendance. Это лучший подход, или у Django уже есть метод, позволяющий это сделать?

1 Ответ

2 голосов
/ 06 августа 2010

Попробуйте:

Member.objects.annotate(talks_attended = Count('Event_Attendance')).filter(talks_attended__lt = 2)

Это не проверено, но я думаю, что это правильно. Мы надеемся, что это вернет вам QuerySet, содержащий только тех участников, которые не участвовали хотя бы в двух беседах.

Вы можете найти документацию по Агрегирование поучительно.

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