Djongo 重新定义 ArrayModelField 的结构

Djongo redefine the structure of ArrayModelField

我正在定义ArrayModelField using Djongo。它看起来不错,但 ArrayModelField 的问题是我只能将其添加为 对象数组 ,而不仅仅是 平面列表 。有什么方法可以将其添加为 Flat List?

示例:

# models.py
from djongo import models

class Option(models.Model):
    option = models.CharField(max_length=100)

    class Meta:
        abstract = True

    def __str__(self):
        return self.option

class Quiz(models.Model):
    _id = models.ObjectIdField()
    question = models.TextField(null=True, blank=True)
    options = models.ArrayModelField(model_container=Option)
    answers = models.ArrayModelField(model_container=Option)

使用它我可以创建如下文档,

但是我想保存成这种格式,

我也希望在 Django 管理面板 中解析视图。

现在有什么方法可以做到这一点吗?

提前致谢。

使用列表字段:

options = models.ListField()

在 Djongo 的最新版本中,如果你想自动支持管理面板,这种结构仍然是不可能的。话虽如此,您始终可以使用 ListField 并为管理面板编写自定义视图,这是目前有效的解决方案。也看不到开发人员将在其中修复的任何时间表。

对于您的用例,连接的数据库是 MongoDB,您可以这样做:

from djongo import models
from django.contrib.postgres.fields import ArrayField


class Option(models.Model):
.
.
.

class Quiz(models.Model):
    _id = models.ObjectIdField()
    question = models.TextField(null=True, blank=True)
    options = models.ArrayField(models.CharField(max_length=1024, blank=True),size=8)

这将以逗号分隔的方式显示您的选项,即 A、B、C attaching a screenshot for example