如何根据Choice文本使用Choices查询CharField?

时间:2014-01-23 12:28:28

标签: django

我们假设我有这个:

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 个答案:

答案 0 :(得分:0)

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