Python Django错误相关字段的查找无效:icontains

Python Django错误相关字段的查找无效:icontains,python,django-models,django-views,django-queryset,Python,Django Models,Django Views,Django Queryset,我正在使用外键在django中进行搜索,但它显示了此错误“相关字段得到了无效的查找:icontains”我在这里发现了类似的情况,但没有工作,我认为错误在queryset_列表行的views.py中 models.py class Anos_dos_manuais(models.Model): ano = models.CharField(max_length=200) publicado = models.BooleanField(default=True) class Me

我正在使用外键在django中进行搜索,但它显示了此错误“相关字段得到了无效的查找:icontains”我在这里发现了类似的情况,但没有工作,我认为错误在queryset_列表行的views.py中

models.py

class Anos_dos_manuais(models.Model):
    ano = models.CharField(max_length=200)
    publicado = models.BooleanField(default=True)

class Meta:
    verbose_name = 'Ano do manual'
    verbose_name_plural = 'Anos dos manuais'

def __str__(self):
    return self.ano

class Disciplina(models.Model):
    título = models.CharField(max_length=200)
    publicado = models.BooleanField(default=True)

class Meta:
    verbose_name = 'Disciplina'
    verbose_name_plural = 'Disciplinas'

def __str__(self):
    return self.título

class Manuais(models.Model):
    nome = models.CharField(max_length=200, null=True)
    título = models.ForeignKey(Disciplina, on_delete=models.DO_NOTHING)
    descrição = RichTextUploadingField(blank=False)
    ano = models.ForeignKey(Anos_dos_manuais, on_delete=models.DO_NOTHING ,max_length=20, null=True, blank=True)
    imagem = models.ImageField(upload_to='imagens/%Y/%m/%d/')
    manual_pdf = models.FileField(upload_to="manuais/%Y/%m/%d", null=True, blank=False)
    data_publicada = models.DateTimeField(default=datetime.now, blank=False, null=True)
    publicado = models.BooleanField(default=True)

class Meta:
    verbose_name = 'Manual'
    verbose_name_plural = 'Manuais'

def __str__(self):
    return self.nome
当使用“外来”和“icontains”进行搜索时,它不起作用,但在其他字段中它起作用 views.py


这里的
titulo
是一个
ForeignKey
,指的是
Desciplina
。您可能希望在该
Desciplina
titulo
字段上进行筛选,因此您应该向该字段添加查找,如:

queryset_list = queryset_list.filter(título__titulo__icontains=keywords)
# …
queryset_list = queryset_list.filter(título__titulo__icontains=manual_disciplina)
#                                            ^ field
#                                    ^ foreign key   ^ lookup
queryset\u list=queryset\u list.filter(título\u titulo\u icontains=关键字)
# …
queryset_list=queryset_list.filter(título__titulo__icontains=manual_practica)
#^field

#^foreign key^ lookup
此处
titulo
是一个
外键
,指的是
Desciplina
。您可能希望在该
Desciplina
titulo
字段上进行筛选,因此您应该向该字段添加查找,如:

queryset_list = queryset_list.filter(título__titulo__icontains=keywords)
# …
queryset_list = queryset_list.filter(título__titulo__icontains=manual_disciplina)
#                                            ^ field
#                                    ^ foreign key   ^ lookup
queryset\u list=queryset\u list.filter(título\u titulo\u icontains=关键字)
# …
queryset_list=queryset_list.filter(título__titulo__icontains=manual_practica)
#^field
#^foreign key^查找