我目前正在尝试将我的新 Django rest API 连接到我已经存在的 mongodb 数据库。目前我正在尝试将我的数据库对象的结构复制为模型。我遇到了问题,我在我的数据库中设置了这样的结构:
{
objects: { DE: [], US: [] }
}
DE 和 US 的属性在这里可以是任何东西(任何地理)。有什么办法可以在我的 djongo 模型中加入这种模式?
如果通过任何方式,您真正的意思是任何东西(或至少超过几种类型的数据),您可以按如下方式设置模型:
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 不只是在阳光下接受任何东西,您还可以添加自定义验证;这是如何做到的。
注意:这使得该objects
字段完全无法通过 Django Admin 网站访问;这仅仅是因为管理站点不可能代表 ListField 可能能够为用户处理的所有可能的输入类型(但是,您仍然可以通过表单/视图向字段提交值)。
如果您有时间,您还可以设计自定义字段。我(遗憾地)对这个geo
领域不是很熟悉,所以我会在这里向你指出如何去做。你可能还想看看 Djongo 的作者是如何实现ListField
前面提到的;它可能会提示如何制作类似列表的数据库条目。这是它的原始代码。
希望这可以帮助!