Я пишу API с Flask и mongoengine. Я использую ReferenceField для базового блока, который ссылается на базовый блок. API должен вернуть объект JSON с данными о модуле и данными о базовом блоке в конечную точку ajax.
Flask:
@masters.route('/get-all-units/', methods=['GET', 'POST'])
@login_required
def getallunits():
units = Units.objects()
return jsonify(data=units)
MongoEngine Schema:
class Units(db.Document):
meta = {"collection":"units"}
code = StringField()
name = StringField()
complexflag = BooleanField(default=False)
factor = FloatField()
baseunit = ReferenceField("self", dbref=True)
created_at = DateTimeField(default=datetime.now(timezone('Asia/Kolkata')))
JSON ответ:
{
"data": [
{
"_id": {
"$oid": "5ea20857a4649f9774f580a8"
},
"code": "cm",
"complexflag": false,
"created_at": {
"$date": 1587677266039
},
"name": "CM"
},
{
"_id": {
"$oid": "5ea20865a4649f9774f580a9"
},
"baseunit": {
"$id": {
"$oid": "5ea20857a4649f9774f580a8"
},
"$ref": "units"
},
"code": "in",
"complexflag": true,
"created_at": {
"$date": 1587677266039
},
"factor": 2.54,
"name": "Inch"
}
]
}
Я хотел бы получить json ответ, но ReferenceField должен содержать информацию о базовом блоке. Я попытался использовать решение, указанное в MongoDB ReferenceField для JSON, но у меня не сработало.