Python:在表达式中使用变量(或调用mongoengine update函数)

2024-09-30 02:15:32 发布

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

所以我试图在mongoengine中调用update函数,但是我需要传入一个变量。我基本上有一个带DictField的模型,我试图看到它的值。所以我有一些

模型.py

class MyDoc(Document):
    dictField = DictField()

在视图.py

^{pr2}$

但当我试图检查模块时,它总是给我一个错误

** keyword can't be an expression

当我把它换成这个的时候

holderId = str(holder.id)
val = "some random value"
MyDoc.update(set__dictField__holderId=val)

它使用“holderId”作为键,而不是实际的值str(持有人身份证)评估结果为。有什么办法绕过这个问题吗?在


Tags: 函数py模型视图updatevaldocumentclass
1条回答
网友
1楼 · 发布于 2024-09-30 02:15:32

看下一个例子:

class MyDoc(Document):
    dictField = DictField()

    def __unicode__(self):
        return unicode(self.dictField)

MyDoc.objects.delete()

MyDoc(dictField={'a': {'b': {'c': 5}}}).save()
print MyDoc.objects.first()
# {u'a': {u'b': {u'c': 5}}}

MyDoc.objects.update(set__dictField__a__b__c=0)
print MyDoc.objects.first()
# {u'a': {u'b': {u'c': 0}}}

例如,如果str(holder.id)返回id1234,那么您的请求将如下所示:

^{pr2}$

或者

MyDoc.objects.update(**{'set__dictField__' + str(holder.id): val})

相关问题 更多 >

    热门问题