Django错误对象.过滤器:值太多,无法取消

2024-10-03 21:34:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始使用Django,我的应用程序中有以下代码:

filtro = "marca:samsung_modelo:s3"
mifiltro = filtro.split('_')
cadena = '0'

for caracteristica in mifiltro:
    if not cadena == '0':
        cadena += ", "
    elif cadena == '0':
        cadena = ''

    aux = caracteristica.split(':')
    cadena += aux[0] + "='" + aux[1] + "'"

那么cadena是:

^{pr2}$

我想用这个变量作为过滤器:

productos = Producto.objects.filter(cadena)

但是我得到了一个错误“太多的值无法解包”。在

如果我用我的代码写:

productos = Producto.objects.filter(marca='samsung',modelo='s3')

它工作得很好。我可以用字符串过滤对象吗?在


Tags: 代码objectss3filtersplitauxsamsungmodelo
2条回答

您可以使用dict,然后使用**将dict的所有值解压为参数:

_vals = {'marca': 'samsung', 'modelo': 's3'}
productos= Producto.objects.filter(**_vals)

我的代码终于奏效了!我需要使用Q对象,所以我修改了如下代码:

filtro = "marca:1|2"
aux = filtro.split(':')
mismarcas = aux[1].split('|')
mimarca = []

for marca in mismarcas:
    mimarca += [Q(**{ aux[0]: marca})]

productos = Producto.objects.filter(reduce(operator.or_, mimarca))

相关问题 更多 >