在外键和onetoone

时间:2016-08-25 18:47:09

标签: python django postgresql foreign-keys django-queryset

我有两个与User相关的模型(在不同的apps / models.py文件中):

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)
    ...

我正在尝试获取当前学期至少有一门课程的所有个人资料的查询集。

如何生成配置文件的查询集,其中profile.user至少有一个CourseStudent个实例,并进行过滤以便coursestudent.semester=current_semester

由于学生在本学期可能有多门课程,因此还需要删除重复项目(仅在查询集中使用唯一的配置文件)

编辑:我正在使用postgresql并试图找出是否需要使用distinct with an argument

1 个答案:

答案 0 :(得分: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()