从 Django 中的列表字段访问值
Access a value from a list field in django
我的 Django 模型中有一个用户列表字段,如下所示:
名称 = models.CharField()
电子邮件 = models.CharField()
配置文件 = 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 执行这样的搜索吗?当我尝试时,它给了我一个例外 "list indices must be integers, not str"。请在这方面指导我。谢谢
一种可能的解决方案是在 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'})
我的 Django 模型中有一个用户列表字段,如下所示: 名称 = models.CharField() 电子邮件 = models.CharField() 配置文件 = 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 执行这样的搜索吗?当我尝试时,它给了我一个例外 "list indices must be integers, not str"。请在这方面指导我。谢谢
一种可能的解决方案是在 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'})