问:django中mongoengine的dict访问列表

问:django中mongoengine的dict访问列表,django,python-3.x,mongoengine,Django,Python 3.x,Mongoengine,如何使用django中的mongoengine从字典列表中获取特定的字典。 如果我想获取学生id为“1011”的词典,请按照下面的数据结构指定。如何做和如何更新该词典只有一个 数据结构如下: class studentData(Document): student_class = StringField(required=True) student_list = ListField() 数据库样本中的数据存储: { "student_class":10. "st

如何使用django中的mongoengine从字典列表中获取特定的字典。 如果我想获取学生id为“1011”的词典,请按照下面的数据结构指定。如何做和如何更新该词典只有一个

数据结构如下:

class studentData(Document):
    student_class = StringField(required=True)
    student_list = ListField()
数据库样本中的数据存储:

{
    "student_class":10.
    "student_list":[
        {
            "student_id" : "1011",
            "student_name" : "ABC"
        },
        {
            "student_id" : "1045",
            "student_name" : "XYZ"
        }
    ]
}
我正在尝试这是给我学生列表,但如何获得特定词典的列表:

studen_list= studentData.objects.filter(student_class=10).values_list('student_list')[0]

为什么不为此编写一个自定义管理器

class studentData(Document):
    student_class = StringField(required=True)
    student_list = ListField()

    find_inside_student_list = FindInsideStudentManager()

class DahlBookManager(models.Manager):
    def get_queryset(self, student_id):
        for data in super().get_queryset():
            if student_id == data['student_id']:
                return data

student_details= studentData.objects.find_inside_student_list.filter(student_class=10, student_id='1011')
注意:由于某些语法问题,上述代码可能无法工作。我写这段代码只是为了告诉您如何实现它

更新: 我找到了另一种使用本地mongoengine的方法

class Model(mongoengine.Document):
    student_list = mongoengine.ListField(mongoengine.ReferenceField(StudentDetailsModel))

class StudentDetailsModel(mongoengine.Document):
    student_id = mongoengine.StringField()
    student_name = mongoengine.StringField()



Model.objects.filter(student_id__contains='1011')

您可以阅读更多关于它的信息

谢谢您的回答,如果没有out循环,这里是不可能的,请使用任何查询直接获取具体信息dictionary@JignashaRoyala我已经更新了答案,请检查一下。这需要
StudentDetailsModel
成为一个acutal集合,对吗?在不将其声明为文档的情况下是否可以执行此操作?