2014-01-23 53 views
1

让我们假设我有这样的:如何根据选择文本查询带有选项的CharField?

class Contrato(models.Model): 
    cliente = models.ForeignKey(Cliente) 
    STATUS = (
     ('A', 'Aguardando material'), 
     ('B', 'Em produção'), 
     ('C', 'Concluído'), 
    ) 
    status = models.CharField(max_length=2, choices=STATUS, default='B') 
    codigo = models.CharField(max_length=255, unique=True, verbose_name='código', error_messages={'unique': 'Já existe um cliente com este'}) 

在仪表板上,有一个酒吧寻找Contratos,这个查询:

contratos = Contrato.objects.filter(Q(codigo__icontains=query) | Q(cliente__nome__icontains=query) | Q(status__icontains=query)) 

然而,我只能搜索状态实际值(” A','B','C'),是否有任何可能的方法来搜索实际文本('Concluído','Produção'等)?

+1

检查此:http://stackoverflow.com/questions/4727327/django-filter-for-get-foo-display-in-a-queryset –

+0

有[一种方法](https://stackoverflow.com/a/47399716/2996101)以使用循环来实现这样的结果。 – raratiru

回答

0

你不能这样做。实际保存到数据库的值为'A', 'B', 'C'以节省存储空间。由于您的查询被转换为数据库查询(通常是SQL),并且在数据库本身上运行,因此只能查询短数值。

相关问题