我的搜索功能运行得很好,但每次我试图在我的网站上搜索一个存在的帖子时,它都会给我带来一个错误.当我在category字段下的问题模型中删除ForeignKey时,错误消失了.请告诉我如何筛选ForeignKey的类别

错误:

FieldError at /index/
Related Field got invalid lookup: category

我的型号:

class Category(models.Model):
    name = models.CharField(max_length=100, blank=False, null=False)

    def __str__(self):
        return str(self.name)


class Question(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100, blank=False, null=False)
    body = RichTextField(blank=False, null=False) 
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    slug = models.SlugField(unique=True, max_length=200)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Question, self).save(*args, **kwargs)

    def __str__(self):
        return str(self.title)

视图:

def index(request):
    query = request.GET.get('q', None)
    list_of_question = Question.objects.all()
    if query is not None:
        list_of_question = Question.objects.filter(
            Q(title__icontains=query) |
            Q(category__category__icontains=query)
        )
    unread_notifications = Notification.objects.filter(user=request.user, is_read=False).count()

    paginator = Paginator(list_of_question, per_page=1)
    return render(request, 'index.html', {'unread_notifications':unread_notifications,'list_of_question':list_of_question, 'paginator':paginator})

我的表格:

<form action="" method="GET">
        <input placeholder="Search By Category" type="text" class="form-control" name="q">
    </form>

推荐答案

如果使用category__…进行过滤,这意味着过滤器的其余部分应处理Category模型的字段,而Category具有name字段,因此使用以下选项进行过滤:

list_of_question = Question.objects.filter(
    Q(title__icontains=query) |
    Q(category__name__icontains=query)
)

Django相关问答推荐

Django Signals:从实例访问ManyToManyRel值

如何显示日期?

创建用户/将用户登录到客户端服务器的标准OAuth/OIDC流程是什么?

Django mods.py我想要一个函数转到一个变量

Django 中模型将数据存储在哪里?

如何在 gunicorn conf 文件中指定 uvicorn 工作人员

在用例图中建模前端和后端

Django 长时间运行带有线程/处理的异步任务

如何使用 matplotlib 在绘图的角落插入小图像?

Django SMTPAuthenticationError

PyCharm 无法正确识别需求 - Python、Django

从 virtualenv 中,pip freeze > requirements.txt 给出了一堆垃圾!如何修剪它?

如何在 Django 和 django-jsonfield 中将 JSONField 的默认值设置为空列表?

如何覆盖 django 管理员翻译?

如何将 django csrf 令牌直接嵌入 HTML?

django sql 查询如何使用不区分大小写的同时包含?

如何获取 pytz 时区的通用名称

Django 多项 Select 字段/复选框 Select 多个

如何使用 Django/nginx 部署仅限 HTTPS 的站点?

如何在 django 模板中呈现有序字典?