代码之家  ›  专栏  ›  技术社区  ›  Jignasha Royala wearestarters we

问:在django使用mongoengine访问dict的列表

  •  4
  • Jignasha Royala wearestarters we  · 技术社区  · 6 年前

    如果我想获取student\ 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]
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Arghya Saha    6 年前

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

    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')
    

    更新:

    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')
    

    你可以多看看 here