1

我尝试在 Flask 中模拟我的 MongoAlchemy 课程。这是我的模型:

{
    "_id" : ObjectId("adfafdasfafag24t24t"),
    "name" : "sth."
    "surname" : "sth."
    "address" : [
     {
      "city" : "Dublin"
      "country" : "Ireland" 
   }
  ]
}

这是我的documents.py类:

   class Language_School(db.Document):
        name = db.StringField()
        surname = db.StringField()
        address = db.???

如何在 Flask 中定义类似数组模型(地址)?

编辑:在提问之前,我已经尝试过我的模型。但我犯了像“AttributeError AttributeError:'list'对象没有属性'items'”这样的错误。

class Address(db.Document):
    city = db.StringField()
    country = db.StringField()

class Language_School(db.Document):
    name = db.StringField()
    surname = db.StringField()
    address = db.DocumentField(Address)
4

2 回答 2

1

你问的ListField是我所理解的。

不过,我不确定您是否真的需要一个列表来存储地址,为什么不使用特殊的文档类型 - DocumentField,如下所示

class Address(Document):
    street_address = StringField()
    city = StringField()
    state_province = StringField()
    country = StringField()

class User(Document):
    name_index = Index().ascending('name').unique()
    name = StringField()
    email = StringField()

    address = DocumentField(Address)

    def __str__(self):
        return '%s (%s)' % (self.name, self.email)
于 2016-07-14T15:13:23.753 回答
0

您可以使用ListField并将城市作为列表中的第一项,将国家作为列表中的第二项。

{
    "_id" : ObjectId("adfafdasfafag24t24t"),
    "name" : "sth."
    "surname" : "sth."
    "address" : ["Dublin", "Ireland"]
}

class Language_School(db.Document):
    name = db.StringField()
    surname = db.StringField()
    address = db.ListField(db.StringField())
于 2016-07-15T12:55:13.793 回答