各种嵌入式文档

时间:2019-07-05 12:19:00

标签: python djongo

我目前正在尝试将新的Django rest API连接到我现有的mongodb数据库。当前,我正在尝试将数据库对象的结构复制为模型。我遇到了一个问题,就是我在数据库中建立了这样的结构:

{
  objects: { DE: [], US: [] }
}

此处的DE和US属性可以是任何值(与此有关的任何地理位置)。有什么办法可以将这种模式纳入djongo模型中?

1 个答案:

答案 0 :(得分:0)

如果您确实是指任何内容(或至少几种类型的数据),则可以按以下方式建立模型:

from djongo import models

...

ObjectDataModel(models.Model):
    US = models.ListField()
    DE = models.ListField()

    class Meta:
        abstract = True  # Stops a database table from being made

...

YourModel(models.Model):
    objects = models.ArrayModelField(model_container=ObjectDataModel)

如果您希望ListFields不只是在阳光下晒太阳,还可以添加自定义验证。 here's how to do that

注意:这使得objects字段通过Django Admin网站完全无法访问;这仅仅是因为管理站点无法代表ListField可以为用户处理的所有可能的输入类型(不过,您仍然可以通过表单/视图向该字段提交值)。

如果有时间,您还可以设计一个自定义字段。我(非常)不太熟悉geo字段,因此我将向您指出here,以获取有关如何进行此操作的说明。您可能还想看看Djongo的作者如何实现前面提到的ListField;它可能会提示如何制作类似列表的数据库条目。 Here's the raw code for that

希望这会有所帮助!