标签: restframeworkmongoengine

在使用 django restframework 多个数据库时,serializer.is_valid() 总是转到默认数据库进行验证

我正在使用 django restframework 并且想要处理多个数据库。我正在使用 django 函数 using(alias) 和 switch_db(alias) 在我想要获取、发布或更新数据时在数据库之间手动切换。

我在发布和更新 data.ie 时遇到问题,每当 serializer.is_valid() 将被调用。

serializer.is_valid() 将首先检查 model.py 文件中的 db_alias。如果我没有在 meta 下指定 db_alias,它将选择默认数据库进行验证。如果我在模型中指定 db_alias,它将选择该数据库进行验证。

但是我不想在模型中指定 db_alias 因为我的用例是根据我的视图文件中的某些逻辑将数据存储在不同的数据库中。所以动态地我想从视图中选择数据库并想在其中存储数据。

几乎我已经实现了,但是当我的模型具有参考字段时我遇到了问题。在这种情况下,serializer.is_valid 将转到默认数据库以验证该引用字段。

所需详细信息:我正在使用 mongoengine(0.9.0)、文档、文档序列化程序。

我的文件如下:

模型.py:

class ngroup(Document):

    groupname = StringField(max_length=100, required=True)
    description = StringField(max_length=100, required=False)
    parent = ReferenceField('ngroup',null=True)
    created_ts = DateTimeField(default=datetime.now())
    modified_ts = DateTimeField(default=datetime.now())
    is_deleted = BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

序列化程序.py:

from device_management.models import ngroup
from rest_framework_mongoengine.serializers import DocumentSerializer
from mongoengine import EmbeddedDocumentField, ReferenceField, StringField, ObjectIdField, IntField, BooleanField, FloatField, DateTimeField,ListField


class ngroupSerializer(DocumentSerializer):

    class Meta:
        model …
Run Code Online (Sandbox Code Playgroud)

python serialization mongoengine restframeworkmongoengine

7
推荐指数
1
解决办法
1733
查看次数

配置不正确:请求的设置为INSTALLED_APPS,但未配置设置

我正在尝试使MongoDB和Django以我想要的方式彼此相处。这是我尝试从rest_framework_mongoengine导入视图集时遇到的错误。

整个错误如下所示:

ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

找不到settings.py或什么?如果是这样,我不知道为什么!即,为什么没有其他模块出现此问题呢?

这是我的 INSTALLED APPS

INSTALLED_APPS = [
    'rest_framework',
    'rest_framework_mongoengine',
    'mongoengine.django.mongo_auth',
    'rest_framework.authtoken',
    'corsheaders',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_extensions',
    'core',
    'core.essences.user',
    'core.essences.user.authentication',
    'core.essences.test_result',
]
Run Code Online (Sandbox Code Playgroud)

django restframeworkmongoengine

4
推荐指数
3
解决办法
6311
查看次数