gpt4 book ai didi

django - 问 : List of dict access with mongoengine in django

转载 作者:行者123 更新时间:2023-12-02 06:02:45 28 4
gpt4 key购买 nike

如何在 django 中使用 mongoengine 从词典列表中获取特定词典。如果我想获取 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"
}
]
}

我尝试给我student_list,但如何获取特定词典的列表:

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

附注:由于某些语法问题,上述代码可能无法运行。我编写此代码只是为了让您了解如何实现它

更新:我发现了另一种使用 native 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')

您可以阅读更多相关信息 here

关于django - 问 : List of dict access with mongoengine in django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52438653/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com