Vishal chavda
Vishal chavda

Reputation: 9

In Django filter argument key not define error

my model is

class Employee(models.Model):
    first_name=models.CharField(max_length=100, null=False)
    last_name=models.CharField(max_length=100)
    dept = models.ForeignKey(Department,on_delete=models.CASCADE)
    salary = models.IntegerField(default=0)
    bonus = models.IntegerField(default=0)
    role = models.ForeignKey(Role, on_delete=models.CASCADE)
    phone = models.IntegerField(default=0,max_length=12)
    hire_date = models.DateField(default=datetime.now()

and my view is as

def fil_emp(request):
    if request.method == "POST":
        # print("post received")
        # print(request.POST)
        name = request.POST['first_name']
        d = request.POST['department']
        role = request.POST['role']

        emps = Employee.objects.all()
        if name:
            emps = emps.filter(Q(first_name__icontains== name) | Q(last_name__icontains == d))
        if d:
            pass
        if role:
            pass
    return render(request, 'fil_emp.html')

but at this time i received error like ** "first_name__icontains" is not defined **

Upvotes: 0

Views: 75

Answers (1)

Milon Mahato
Milon Mahato

Reputation: 190

You are given == to check the condition. Change the following line like this:

emps = emps.filter(Q(first_name__icontains = name) | Q(last_name__icontains = d))

For more, you can see the official doc of Django: https://docs.djangoproject.com/en/4.0/ref/models/querysets/#django.db.models.Q

Upvotes: 1

Related Questions