从django中的列表字段访问值

时间:2016-08-24 08:38:09

标签: django django-mongodb-engine

我的django模型中有一个列表字段供用户使用,如下所示:     name = models.CharField()     email = models.CharField()     profiles = ListField()

我在django_mongodb_engine的帮助下使用mongo作为存储数据库。 对于一个用户,模型对象可能是  

 {name: 'Alice', email: 'abc', profiles: ['Read']} 
对于另一个用户,可能是:

 {name: 'John', email: 'xyz', profiles: ['Read', 'Write']} 

我想搜索为其分配了阅读个人资料的用户。 在mongo db shell中,只需添加查询

{'profiles': 'Read'} 
即可执行。 我们可以通过django querysets执行搜索吗?当我尝试时,它给了我一个例外"列表索引必须是整数,而不是str"。请在这方面指导我。感谢

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案可能是在MongoDBManager的帮助下使用原始查询:

from django_mongodb_engine.contrib import MongoDBManager

class UserModel(models.Model):
    name = models.CharField()
    email = models.CharField()
    profiles = ListField()

    objects = MongoDBManager()

然后:

UserModel.objects.raw_query({'profiles': 'Read'})