2017-03-29 25 views
0

私の車のモデルでは、私は次のフィールドがあります:name, manufacturer, body, car_type and descriptionQ Lookups TypeError Django

私は検索バーを実装しましたが、私が検索したときには文句です:Q(car_type__icontains=query)ここ

いただきました問題について

Related Field got invalid lookup: icontains 

を正確に?

query = request.GET.get("q") 
if query: 
    car = car.filter(
     Q(name__icontains=query) | 
     Q(manufacturer__icontains=query) | 
     Q(body__icontains=query) | 
     Q(car_type__icontains=query) 
    ).distinct() 

Models.py

class CarModelBase(models.Model): 

    class Meta: 
     abstract = True 
    name = models.CharField(max_length=100) 

class CarType(CarModelBase, SortableModelBase): 
    class Meta(CarModelBase.Meta): 
     ordering = ['order'] 
     verbose_name = 'Car Type' 
     verbose_name_plural = 'Car Types' 

    def __str__(self): 
     return self.name 

class Car(CarModelBase): 
    manufacturer = SortableForeignKey(Manufacturer) 
    car_type = SortableForeignKey(CarType) 
    body = SortableForeignKey(Body) 
    description = models.TextField() 

答えて

2

car_typeが外部キーである場合は、Q(car_type__icontains=query)を行うことはできません。あなたは、たとえば、検索したいCarTyoeモデルにフィールドを指定する必要があります。

Q(car_type__name__icontains=query) 
+0

私はあなたが何を意味するか理解しない... –

+0

私はそれをアップロードしました! –

+0

変数をフィルタリングすることはできませんか? –

関連する問題