2016-08-25 1 views
0

У меня есть две модели (в разных приложениях/models.py файлов), связанных с пользователем:Построение Джанго QuerySet над внешним ключом и onetoone

class Profile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=False) 
    ... 


class CourseStudent(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    semester = models.ForeignKey(Semester) 
    ... 

Я пытаюсь получить QuerySet всех профилей, которые имеют по крайней мере, один курс в текущем семестре.

Как создать набор запросов для профилей, где profile.user имеет хотя бы один экземпляр CourseStudent и фильтруется так, что coursestudent.semester=current_semester?

Поскольку студент может иметь несколько курсов в семестре, дубли также должны быть удалены (уникальные профили только в QuerySet)

EDIT: Я использую PostgreSQL и пытаюсь выяснить, если мне нужно использовать distinct with an argument.

ответ

0

Не проверено. Возможно, вам стоит попробовать

class Profile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=False) 
    ... 


class CourseStudent(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="course_student") 
    semester = models.ForeignKey(Semester) 

Profile.objects.filter("what_you_want").exclude(user__courser_student=None).distinct()