3

我正在使用Djongo定义ArrayModelField。它看起来很棒,但问题是我只能将它添加为Array of Objects,而不仅仅是Flat List。有什么方法可以将它添加为Flat List吗?ArrayModelField

例子:

# 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 管理面板中解析视图。

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

提前致谢。

4

3 回答 3

2

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

于 2020-03-02T17:13:47.480 回答
1

使用列表字段:

options = models.ListField()

于 2019-01-04T13:15:00.960 回答
0

对于您的用例,连接的数据库是 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 附加屏幕截图

于 2022-01-20T20:20:56.397 回答