问:django 中 mongoengine 的 dict 访问列表
Q: List of dict access with mongoengine in django
如何在 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')
P.S。 : 由于某些语法问题,上述代码可能无法运行。我编写这段代码只是为了让您了解如何实现它
更新:
我找到了另一种使用原生 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 中使用 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')
P.S。 : 由于某些语法问题,上述代码可能无法运行。我编写这段代码只是为了让您了解如何实现它
更新: 我找到了另一种使用原生 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