Фильтр Django "__contains" поиск броска "не определено" - PullRequest
1 голос
/ 04 ноября 2019

Я пытаюсь получить все объекты в моей базе данных, которые называются LIKE '% что-то%'

После прочтения документации и поиска в Интернете я понял, что при использовании django мне придется использовать __containslookup.

Но когда я пытаюсь это сделать, консоль выдает мне сообщение об ошибке 500 'NameError: имя' component_name__contains 'не определено'

Моя модель следующая:

class Ingredient(models.Model):
    article_number = models.AutoField(primary_key=True)
    ingredient_name = models.CharField(max_length=100, null=False)
    cost_amount = models.FloatField(validators=[MinValueValidator(0.1)])
    cost_per_unit = models.FloatField(validators=[MinValueValidator(0)])
    unit = models.ForeignKey(MeasurementUnit,on_delete=models.CASCADE)

    def __str__(self):
        return self.ingredient_name

И метод фильтрации:

def filter(request, filter):
    filtered = Ingredient.objects.all().filter(ingredient_name__contains(filter))

Я не могу понять, чего мне не хватало в этом, это сводит меня с ума.

Если кто-то может помочь, я действительно буду признателен!

1 Ответ

1 голос
/ 04 ноября 2019

Фильтрация в Django осуществляется через именованные параметры, поэтому вы должны фильтровать с помощью:

def filter(request, filter):
    filtered = Ingredient.objects.filter(<b>ingredient_name__contains=filter</b>)
    # &hellip;
...