Djongo重新定义了ArrayModelField的结构
Posted
技术标签:
【中文标题】Djongo重新定义了ArrayModelField的结构【英文标题】:Djongo redefine the structure of ArrayModelField 【发布时间】:2019-04-02 06:15:12 【问题描述】:我使用Djongo 定义ArrayModelField。看起来不错,但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 管理面板 中解析视图。
我现在有什么办法可以做到这一点吗?
提前致谢。
【问题讨论】:
我不明白为什么你需要一个单独的模型,如果这是你想要的格式。为什么不是简单的 ArrayField? 我认为 ArrayField 是 Postgres 特有的。无论如何,我在 Djongo 中找不到 ArrayField。 【参考方案1】:在 Djongo 的最新版本中,如果你想自动支持管理面板,这种结构仍然是不可能的。话虽如此,您始终可以使用ListField
并为管理面板编写自定义视图,这是目前有效的解决方案。也看不到开发人员将在其中修复的任何时间表。
【讨论】:
【参考方案2】:使用列表字段:
options = models.ListField()
【讨论】:
感谢您的回答,科布。不幸的是,我认为,这在 Django 管理面板中没有得到解析。我希望在管理面板中查看此内容。 为了能够在管理面板中查看它,您必须定义 ModelForm 类。在这里你可以看到如何做到这一点:djongo.readthedocs.io/docs/list-field 是的!但是,如果 ModelForm 类是平面列表,则它不起作用。 你是对的。我最近遇到了同样的问题,但切换到 ArrayField 似乎工作正常。请检查:***.com/a/53811152 非常感谢,科布!会检查出来。以上是关于Djongo重新定义了ArrayModelField的结构的主要内容,如果未能解决你的问题,请参考以下文章
将 Djongo (Mongo ORM) 与 CosmosDB 一起使用?