0

私は以下のようなモデルを持っています:

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 の準備が整ったメソッドであればいいのですが。よろしくお願いします。

4

1 に答える 1

0

あなたの質問には確信が持てませんが、 isinstance 関数のようなものを使用して、それが何らかのクラスのインスタンスであるかどうかを確認できます。

isinstance()その特定の名前が目的のクラスのインスタンスであるかどうかを確認するために使用できます

>>> class A:
...     pass
... 
>>> a = None
>>> b = A()
>>> isinstance(a,A)
False
>>> isinstance(b,A)
True
>>> 

取得Falseした場合は、インスタンスを作成できると思います。

于 2014-10-12T18:03:43.563 に答える