2017-03-29 3 views
0

In meinem Fahrzeugmodell habe ich die folgenden Felder: name, manufacturer, body, car_type and description.Q Lookups TypeError Django

Ich habe eine Suchleiste umgesetzt, aber wenn ich es suchen beschweren:

hier genau
Related Field got invalid lookup: icontains 

auf Q(car_type__icontains=query)

Was ist das Problem?

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() 

Antwort

2

Wenn car_type ein Fremdschlüssel ist, dann kann man nicht Q(car_type__icontains=query) tun. Sie müssen das Feld auf das CarTyoe Modell angeben, die Sie suchen mögen, zum Beispiel:

Q(car_type__name__icontains=query) 
+0

Ich verstehe nicht, was du meinst .. –

+0

Ich habe es zu! –

+0

Ist es nicht möglich, Filter durch die Variablen zu filtern? –