使用 Django 使用 MongoDB 时如何在对象内创建数组?

Posted

技术标签:

【中文标题】使用 Django 使用 MongoDB 时如何在对象内创建数组?【英文标题】:How to create an array inside an object when working with MongoDB using Django? 【发布时间】:2022-01-21 12:26:45 【问题描述】:

我正在做一个项目,我希望我的用户模型具有这种结构。 structure


   "_id":
      "$oid":"61bf3e026ffc7993a082773e"
   ,
   "email":"user@domain.com",
   "role":"student",
   "type":"t1",
   "fname":"ABC",
   "from":
      "org-user":[
         "83bf3e026ffc7993a0827731",
         "78bf3e026ffc7993a0827731"
      ]
   

在此模型中,“from”是具有一个键“org-user”的对象。这个“org-user”是一个 mongodb 对象 ID 的数组。

这是我目前写的代码。

from djongo import models


class User(models.Model):
    class Meta:
        db_table = "users"

    _id = models.ObjectIdField()
    email = models.EmailField(
        max_length=255,
        unique=True,
    )
    role = models.CharField(max_length=255, default="student")
    type = models.CharField(max_length=255, default="internal")
    fname = models.CharField(max_length=255)

知道如何在 Django 中实现这一点吗?

【问题讨论】:

【参考方案1】:

看看 djongos models.ArrayField,类似

class User(models.Model):
    class Meta:
        db_table = "users"

    _id = models.ObjectIdField()
    email = models.EmailField(
        max_length=255,
        unique=True,
    )
    role = models.CharField(max_length=255, default="student")
    type = models.CharField(max_length=255, default="internal")
    fname = models.CharField(max_length=255)

    # something like that
    org_user = models.ArrayField(
        model_container=models.CharField(max_length=100)
    )

在此处了解更多信息MongoDB ArrayField。

您也可以尝试python manage.py inspect_db User > models_file.py,但我不知道 djongo 可以在这里做什么,从现有数据库自动生成模型。

【讨论】:

以上是关于使用 Django 使用 MongoDB 时如何在对象内创建数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中从 MongoDB 提供图像文件

如何在mongodb中扩展django的默认用户?

使用 mongoDB Dockerize Django 应用程序

django中配置多个mongodb数据库

Django使用mongodb数据库关于自增长id的值设置

django+mongodb 内置用户控制