【问题标题】:How to create an array inside an object when working with MongoDB using Django?使用 Django 使用 MongoDB 时如何在对象内创建数组?
【发布时间】: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 中实现这一点吗?

【问题讨论】:

    标签: django mongodb django-models nested djongo


    【解决方案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 可以在这里做什么,从现有数据库自动生成模型。

    【讨论】:

      猜你喜欢
      • 2019-11-03
      • 1970-01-01
      • 2020-07-27
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多