处理数据库查询并过滤Django和unicode

2024-10-02 16:32:40 发布

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

我用下面的查询过滤

list = AboutMe.objects.order_by('MyLinkedInLastName').filter(Q(MyGender__contains=Gender1))

但当我使用unicode字符串时,它似乎不起作用。让我解释一下。在表中,数据字段存储为:[u'_M', u'_F']。例如,拾取另一个记录的行和字段可能是[u'''u']。当我把它剥离到文本中-即remove[]和display,我得到u''u M',我在过滤器中使用它作为Gender1。现在这似乎行不通。但如果我把''u M'硬编码到过滤器里就行了。我不明白到底发生了什么-这里有什么隐含的转换吗?在

我从^{得到Gender1

不过,这似乎奏效了

^{pr2}$

顺便说一句,为了达到这个目的,我简化了查询。这似乎是编码的问题。最好的方法是什么使这项工作顺利而有力?在


Tags: 字符串过滤器编码byobjectsunicodeorderfilter
1条回答
网友
1楼 · 发布于 2024-10-02 16:32:40

您将数据存储为一个字符串,该字符串是从列表的Python表示中创建的。这是个极坏的主意。在

直接的问题是,即使您删除了[字符并在逗号上拆分,剩下的仍然是字符串"u'_M'"和{}-也就是说,u字符和左右引号作为字符串的一部分存储。因此,这不是您所想的“Unicode字符串”,而是一个简单的字符串,它包含一个前导u,后跟引号。在

与其这样做,您也许可以将文本存储为JSON—Django中有各种JSONFields实现,它们负责为您序列化和反序列化数据。在

相关问题 更多 >