【发布时间】:2021-07-03 04:01:44
【问题描述】:
我正在使用djongo 包作为数据库后端引擎,以便连接到 MongoDB 并在其上定义我的模型。
settings.py:
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': str(BASE_DIR / 'db.sqlite3'),
# },
'default': {
'ENGINE': 'djongo',
'NAME': 'djongo-db',
'ENFORCE_SCHEMA': False,
'CLIENT': {
'host': 'localhost',
'port': 27017,
'username': 'root',
'password': 'root',
'authSource': 'admin',
'authMechanism': 'SCRAM-SHA-1'
}
}
}
models.py:
class EventModel(BaseModel)
name = models.CharField(max_length=20)
class CalendarModel(BaseModel):
name = models.CharField(max_length=20)
color = models.CharField(max_length=20)
event = models.ForeignKey(to=EventModel, on_delete=models.SET_NULL, null=True)
和 admin.py:
from django.contrib import admin
from .models import CalendarModel, EventModel
@admin.register(CalendarModel)
class CalendarAdmin(admin.ModelAdmin):
exclude = ['_id']
@admin.register(EventModel)
class EventAdmin(admin.ModelAdmin):
exclude = ['_id']
使用 SQLite 后端可以正常工作,并且当 djongo 后端没有外键字段时它可以正常工作,但是在使用 djongo 后端 并且有外键字段时给我一个错误。它说:
如上图所示,它可以从数据库中加载对象并正确检测关系,但无法保存。
而且我无法创建与另一个对象相关的新对象。 我该如何解决这个问题?
更新
我可以使用这样的代码创建对象,问题似乎来自 Django 管理站点
e = EventModel.objects.first()
CalendarModel.objects.create(name="test", color="red", event=e)
【问题讨论】:
-
将
blank=True放入事件字段.. -
@Pradip 我这样做了,但该错误仍然存在:(