私は以下のようなモデルを持っています:
class Primary(db.Document):
primaryName = db.StringField(required=True, max_length=20)
secondaries = db.ListField(db.EmbeddedDocumentField(Secondary))
class Secondary(db.EmbeddedDocument):
secondaryName = db.StringField(required=True, max_length=20)
secondarySurname = db.StringField(max_length=20)
特定の名前のセカンダリのオブジェクトを取得するか、存在しない場合は作成します。これまでのところ、これよりも良い方法は見つかりませんでした:
# get the object if it exists already. Create otherwise
targetSecondary = None
for curSecondary in primary.secondaries:
if curSecondary.secondaryName == 'targetName':
targetSecondary = curSecondary
break
if not targetSecondary:
targetSecondary = Secondary(secondaryName='targetName')
primary.secondaries.append(targetSecondary)
targetSecondary.secondarySurname = 'blahblah'
より良い方法があるのだろうか (ほぼ確実にあると思います)、それがまだわからない MongoEngine の準備が整ったメソッドであればいいのですが。よろしくお願いします。