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)

我想获取具有特定名称的Secondary对象,或者如果它不存在则创建它。到目前为止,我还没有找到比这更好的方法:

# 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 回答