Django - 仅从查询中选择特定行

时间:2018-02-21 21:54:13

标签: django

我开始学习django,作为我的第一个项目,我正在尝试创建目录。

我创建了3个表

  1. 学生

  2. 目录

  3. 这两个

  4. 之间的链接表

    这就是我的models.py的样子:

    class Catalog(models.Model):
        Class = models.CharField(max_length =30)
    
        def __str__(self):
            return str(self.Class)
    
    
    class StudentiAn4(models.Model):
        Username = models.ForeignKey(User)
        FirstName = models.CharField(max_length=50)
        LastName = models.CharField(max_length=50)
        Group = models.CharField(max_length=4)
    
        def __str__(self):
            return str(self.Username) + ' ' + self.FirstName +' ' + self.LastName
    
    
    class CatalogStudenti(models.Model):
        catalog = models.ForeignKey(Catalog)
        student = models.ForeignKey(StudentiAn4)
        grade = models.IntegerField()
    
        def __str__(self):
            return str(self.catalog) +' ' + str(self.student)
    

    观点:

    def studenti(request):
        query = CatalogStudenti.objects.all()
        return render(request, 'users/Studenti.html',{'query': query})
    

    作为登录用户(用户名:1​​23,FirstName:test1,LastName:test1_LN ),我希望只查看分配给我的成绩,而不是所有成绩。 你能否告诉我如何过滤输出,以便只看到分配给我的成绩?

    当前输出:

    123 test1 test1_LN - SEP 5
    234 test2 test2_LN - ASC 4
    123 test1 test1_LN - AACEP 6
    

    期望的输出:

    123 test1 test1_LN - SEP 5
    123 test1 test1_LN - AACEP 6
    

1 个答案:

答案 0 :(得分:1)

更改视图功能中的查询集,以便按来自student的用户字段进行过滤:

query = CatalogStudenti.objects.filter('student__Username'=request.user)