python相关字段的查找无效:name

watbbzwu  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(260)

我试图在我的apiview上实现q搜索,但它显示无效的查找名称,这很奇怪。我已经根据模型的字段添加了搜索字段。
我的看法是:

  1. from django.db.models import Q
  2. class PrdouctSearchAPIView(ListAPIView):
  3. permission_classes = [AllowAny]
  4. # def list(self, request, *args,**kwargs):
  5. def get(self, request, *args,**kwargs):
  6. qur = self.request.query_params.get('search')
  7. item = Product.objects.filter(Q(category__name__icontains=qur)|
  8. Q(brand__name__icontains=qur)|
  9. Q(description__icontains=qur)|
  10. Q(collection__name__icontains=qur)|
  11. Q(variants__name__icontains=qur))
  12. serializer = ProductSerializer(item,many=True)
  13. return Response(serializer.data)

我的模型:

  1. class Product(models.Model):
  2. merchant = models.ForeignKey(Seller,on_delete=models.CASCADE,blank=True,null=True)
  3. category = models.ManyToManyField(Category, blank=False)
  4. sub_category = models.ForeignKey(Subcategory, on_delete=models.CASCADE,blank=True,null=True)
  5. brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
  6. collection = models.ForeignKey(Collection, on_delete=models.CASCADE)
  7. featured = models.BooleanField(default=False) # is product featured?
  8. description = RichTextField(blank=True)
  9. variants = models.ManyToManyField(Variants,related_name='products')
  10. class Category(models.Model):
  11. #parent = models.ForeignKey('self',related_name='children',on_delete=models.CASCADE,blank=True,null=True)
  12. name = models.CharField(max_length=100, unique=True)
  13. image = models.ImageField(null=True, blank=True)
  14. class Brand(models.Model):
  15. brand_category = models.ManyToManyField(Category,blank=True,null=True)
  16. name = models.CharField(max_length=100, unique=True)
  17. class Collection(models.Model):
  18. name = models.CharField(max_length=100, unique=True)
  19. image = models.ImageField(null=True, blank=True)

我的网址是:

  1. path('api/productsearch',views.PrdouctSearchAPIView.as_view(),name='api-productsearch'),

正如我们可以看到的,有字段“category\uuuu name”,这样的字段不仅是“name”,而且错误表示查找“name”无效。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题