Django过滤器“ __包含”查找抛出“未定义”

时间:2019-11-03 21:42:38

标签: python django django-models

我正在尝试获取数据库中名称为LIKE'%something%'的所有对象

在阅读文档并在线搜索后,我发现使用django必须使用__contains查找。

但是,当我尝试这样做时,控制台会向我抛出错误500 'NameError:名称'ingredient_name__contains'未定义'

我的模型如下:

  {
    path: 'buildings',
    component: BuildingsComponent,
  },
  {
    path: 'buildings/:buildingId',
    component: BuildingComponent,
  },
  {
    path: 'buildings/:buildingId/floors/:floorId',
    component: FloorComponent,
  }

过滤方法是:

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

我不知道我在这方面缺少什么,这让我发疯了。

如果有人能帮助我,我将非常感激!

1 个答案:

答案 0 :(得分:1)

在Django中,过滤是通过命名参数完成的,因此您应使用:

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