为了账号安全,请及时绑定邮箱和手机立即绑定

FilterSet 未运行查询

FilterSet 未运行查询

跃然一笑 2023-06-13 16:09:04
我在将过滤器应用于 django 中的表时遇到了一些麻烦,当我应用过滤器(即单击“搜索”)时没有任何反应。没有错误。没有崩溃。纳达。该表保持不变,就好像什么都没发生一样,尽管 url 确实改变了添加我应用的搜索字段。为了简单起见,我将重命名变量、模型和所有内容的原始名称。models.pyfrom django.db import modelsfrom other_app.models import CustomUserfrom another_app.models import OtherModelclass SomeThings(models.Model):    # default User was replaced with an AbstractUser model    user = models.OneToOneField(CustomUser, on_delete=models.PROTECT)     id = models.CharField(max_length=10,primary_key=True)    thing_1= models.PositiveIntegerField(blank=False)    thing_2= models.PositiveIntegerField(blank=False)    image= models.ImageField(null=True, blank=True)class SomeStuff(models.Model):    id = models.OneToOneField(SomeThings, on_delete=models.PROTECT)    stuff_1 = models.CharField(max_length=255, blank=False)    stuff_2 = models.CharField(max_length=255, blank=False)    stuff_3 = models.ForeignKey(OtherModel, on_delete=models.PROTECT, null=True)class OtherInfo(models.Model):    id = models.OneToOneField(SomeThings, on_delete=models.PROTECT)    character_1 = models.CharField(max_length=255, blank=False)    character_2 = models.CharField(max_length=255, blank=False)filters.pyimport django_filtersfrom .models import *class myFilter(django_filters.FilterSet):    class Meta:        model = SomeStuff        fields = '__all__'        exclude = ['stuff_2','stuff_3']views.pyfrom django.shortcuts import renderfrom django.http import HttpResponsefrom .filters import myFilterdef search(request):    products = SomeStuff.objects.all()    filter= myFilter(request.GET,queryset=products)    product= filter.qs    context = {'products':products,'filter':filter,}    return render(request, 'search.html', context)基本上,用户模型与模型 SomeThings 相关。后面的模型包含另一个用于 SomeStuff 和 OtherInfo 的 primary_key。在表格上,正在显示来自 SomeStuff 和 OtherInfo 的信息,但是,我只想使用 SomeStuff 中指定的变量 stuff_1 来过滤表格。
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

我认为你必须product改变products


def search(request):

    products = SomeStuff.objects.all()


    filter= myFilter(request.GET,queryset=products)

    products= filter.qs  #this should be products instead of product


    context = {'products':products,'filter':filter,}

    return render(request, 'search.html', context)


查看完整回答
反对 回复 2023-06-13
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号