gpt4 book ai didi

python - Django错误相关字段查找无效: icontains

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:00 24 4
gpt4 key购买 nike

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

模型.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

当使用foreign和icontains进行搜索时,它不起作用,但对于其他字段它可以工作 View .py

def search_manual(request):
queryset_list = Manuais.objects.order_by('-data_publicada')
disciplinas = Disciplina.objects.filter(publicado=True)
anos = Anos_dos_manuais.objects.filter(publicado=True)

#keywords
if 'keywords' in request.GET:
keywords = request.GET['keywords']
if keywords:
queryset_list = queryset_list.filter(título__icontains=keywords)

#Ano
if 'manual_ano' in request.GET:
manual_ano = request.GET['manual_ano']
if manual_ano:
queryset_list = queryset_list.filter(ano__icontains=manual_ano)

#Disciplina
if 'manual_disciplina' in request.GET:
manual_disciplina = request.GET['manual_disciplina']
if manual_disciplina:
queryset_list = queryset_list.filter(título__icontains=manual_disciplina)


context = {
'anos': anos,
'disciplinas': disciplinas,
'manuais': queryset_list
}
return render(request, 'manuais/search.html', context)

最佳答案

这里的titulo是一个引用DeciplinaForeignKey。您可能想要过滤该 Deciplinatitulo 字段,因此您应该将查找添加到该字段,例如:

queryset_list = queryset_list.filter(<b>título__titulo__icontains=keywords</b>)
# …
queryset_list = queryset_list.filter(<b>título__titulo__icontains=manual_disciplina</b>)
# ^ field
# ^ foreign key ^ lookup

关于python - Django错误相关字段查找无效: icontains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com