如何在django中使用foreignkey进行过滤的过滤?

时间:2017-01-12 05:49:33

标签: python django

我有模特

SiswaID = models.AutoField(primary_key=True)
WaliKelasID = models.CharField(max_length=11, blank=True, null=True)
SiswaKelas = models.ForeignKey(biayapendidikan, null=True, blank=True)

class biayapendidikan(models.Model):
     BiayaID=models.AutoField(primary_key=True)
     BiayaSpp=models.IntegerField(null=True, blank=True)
     BiayaDpps=models.IntegerField(null=True,blank=True)
     Kelas=models.CharField(max_length=10, null=True, blank=True)
     Unit=models.CharField(max_length=1, null=True, blank=True)
     BiayaKeterangan=models.CharField(max_length=255, null=True, blank=True)

def __str__(self):
    return self.Kelas

我想通过SiswaKelas(ForeignKey)

在模板中过滤它
keyword2=request.GET['tingkat']
siswa['listsiswa'] = DataPribadiSiswa.objects.filter(Q(SiswaKelas__icontains = keyword2))
return render(request, 'index.html', siswa)

当我运行它时,我收到此错误

Related Field got invalid lookup: icontains

1 个答案:

答案 0 :(得分:1)

首先。模型属性应该是小写的,并且_下划线。

其次。如果您想在外键上使用不区分大小写的包含测试icontains,则需要提供您想要过滤的属性。

最后,您不需要在此处使用Q对象。

在你的情况下,它将是:

DataPribadiSiswa.objects.filter(siswa_kelas__some_name__icontains=keyword2))