django - 在 Django Admin 中使用 Djongo 的 ArrayField
问题描述
Djongo是一个Django 和 MongoDB 数据库连接器,除了其他之外,它还为 Django 模型带来了ArrayField 。它允许将另一个实例的多个实例存储djongo.models.Model
在一个唯一的MongoDB 数组字段中,该字段与Model
具有Arrayfield
如源文档中所述:“容器的模型必须声明为抽象的,因此不应被视为它自己的集合。”
以及在djongo 的站点教程中
“如果您不打算将嵌入式模型用作独立模型(这意味着它将始终嵌入到父模型中),您应该添加class Meta
andabstract = True
这样 Djongo 将永远不会注册此模型作为一个实际的模型。”
我这样制作:
# models.py
class Contact(models.Model):
key = models.CharField(max_length=100)
class Meta:
abstract = True
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = ('key',)
class Person(models.Model):
_id = models.ObjectIdField()
...
contact = models.ArrayField(
model_container=Contact,
model_form_class=ContactForm,
)
objects = models.DjongoManager()
# admin.py
admin.site.register(Person)
$ pip freeze
Django==3.2.4
djongo==1.3.6
pymongo==3.11.4
...
但是,当我尝试Person
通过 Django Admin 添加一个(在 /admin/<app>/person/add/ 中)我收到错误抽象模型无法从.../django/db/models/base.py
这似乎与 Djongo 的描述不一致。难道我做错了什么?
解决方案
推荐阅读
- openid-connect - 访问令牌刷新后,是否可以使用 id 令牌 at_hash 验证访问令牌和 id 令牌对?
- excel - 有没有办法使用 Excel VBA 更新 powerquery 中的过滤器?
- javascript - 获取数据id
- javascript - 从具有相同键、值的数组创建对象
- python - 与 Regex 不匹配的 SQL 数据不会被过滤掉
- html - 没有导航栏
- flutter - 颤振在列表中转换字符串双精度
- node.js - 有效地运行多个 node.js 应用程序
- c# - 具有默认值的自定义 where 子句扩展 EF Core 5.0.3
- android - 为什么无法为 Expo SDK 32 生成 APK 文件?有什么选择吗?