让所有在桌面上至少有1个主题的教师 - Django Query Set

时间:2014-05-16 22:41:50

标签: python django

我想让所有拥有至少一门科目的教师。目前我正在使用......

user = users.objects.all().order_by('-karma')[:100]

因为没有相关科目的人是学生。

这是我的 models.py

class subjects(models.Model):
    id_user = models.IntegerField(db_column='ID_user') # Field name made lowercase.
    s = models.CharField(max_length=90)

    def __unicode__(self):
        return self.s

    class Meta:
        db_table = 'subjects'


class users(models.Model):
    email = models.EmailField(max_length=160)
    nick = models.CharField(unique=True, max_length=60)
    karma = models.IntegerField(max_length=11)
    pass_field = models.CharField(db_column='pass', max_length=160)

1 个答案:

答案 0 :(得分:1)

一种选择是分两步完成:

  • values_list()的帮助下从主题模型中获取id_user列表:

    user_ids = subjects.objects.values_list('id_user', flat=True).distinct()
    
  • 使用__inid_user列表中获取所有用户:

    print users.objects.filter(pk__in=user_ids)
    

此外,由于模型不相关,您可以制作一个raw query,它可以一次完成相同的操作。