列表字段中只能使用列表和元组验证错误
Only lists and tuples may be used in a list field Validation Error
您好,我正在为我的模型实施测试用例。
我正在使用 Mongoengine0.9.0 + Django 1.8
我的models.py
class Project(Document):
# commented waiting for org-group to get finalize
project_name = StringField()
org_group = ListField(ReferenceField(OrganizationGroup, required=False))
我的Serializers.py
class ProjectSerializer(DocumentSerializer):
class Meta:
model = Project
depth = 1
test.py 文件
def setUp(self):
# Every test needs access to the request factory.
self.factory = RequestFactory()
self.user = User.objects.create_user(
username='jacob', email='jacob@jacob.com', password='top_secret')
def test_post_put_project(self):
"""
Ensure we can create new clients in mongo database.
"""
org_group = str((test_utility.create_organization_group(self)).id)
url = '/project-management/project/'
data = {
"project_name": "googer",
"org_group": [org_group],
}
##import pdb; pdb.set_trace()
factory = APIRequestFactory()
user = User.objects.get(username='jacob')
view = views.ProjectList.as_view()
# Make an authenticated request to the view...
request = factory.post(url, data=data,)
force_authenticate(request, user=user)
response = view(request)
self.assertEqual(response.status_code, 200)
当我 运行 测试用例时,我收到此错误
(Only lists and tuples may be used in a list field: ['org_group'])
完整的堆栈跟踪是
ValidationError:调用 Project.objects.create()
时出现 ValidationError
。
这可能是因为请求数据满足序列化器验证但不满足 Mongoengine 的。
您可能需要检查 Project 和 ProjectSerializer 之间的一致性。
如果不是这种情况,请在 https://github.com/umutbozkurt/django-rest-framework-mongoengine/issues
上就此问题开工单
原始异常是:ValidationError(项目:None)(列表字段中只能使用列表和元组:['org_group'])
不明白为什么我们不能像这样传递对象。
当我作为对相同方法的请求发布时,同样的事情对我有用,但测试用例失败了
测试应该 运行 使用 multipart/form-data
,这意味着它们不支持列表或嵌套数据。
您可以 override this with the format
argument,我猜您可能想将其设置为 json
。很可能您的前端正在使用 JSON,或支持列表的解析器,这解释了为什么您看不到这个。
您好,我正在为我的模型实施测试用例。 我正在使用 Mongoengine0.9.0 + Django 1.8
我的models.py
class Project(Document):
# commented waiting for org-group to get finalize
project_name = StringField()
org_group = ListField(ReferenceField(OrganizationGroup, required=False))
我的Serializers.py
class ProjectSerializer(DocumentSerializer):
class Meta:
model = Project
depth = 1
test.py 文件
def setUp(self):
# Every test needs access to the request factory.
self.factory = RequestFactory()
self.user = User.objects.create_user(
username='jacob', email='jacob@jacob.com', password='top_secret')
def test_post_put_project(self):
"""
Ensure we can create new clients in mongo database.
"""
org_group = str((test_utility.create_organization_group(self)).id)
url = '/project-management/project/'
data = {
"project_name": "googer",
"org_group": [org_group],
}
##import pdb; pdb.set_trace()
factory = APIRequestFactory()
user = User.objects.get(username='jacob')
view = views.ProjectList.as_view()
# Make an authenticated request to the view...
request = factory.post(url, data=data,)
force_authenticate(request, user=user)
response = view(request)
self.assertEqual(response.status_code, 200)
当我 运行 测试用例时,我收到此错误
(Only lists and tuples may be used in a list field: ['org_group'])
完整的堆栈跟踪是
ValidationError:调用 Project.objects.create()
时出现 ValidationError
。
这可能是因为请求数据满足序列化器验证但不满足 Mongoengine 的。
您可能需要检查 Project 和 ProjectSerializer 之间的一致性。
如果不是这种情况,请在 https://github.com/umutbozkurt/django-rest-framework-mongoengine/issues
上就此问题开工单原始异常是:ValidationError(项目:None)(列表字段中只能使用列表和元组:['org_group'])
不明白为什么我们不能像这样传递对象。
当我作为对相同方法的请求发布时,同样的事情对我有用,但测试用例失败了
测试应该 运行 使用 multipart/form-data
,这意味着它们不支持列表或嵌套数据。
您可以 override this with the format
argument,我猜您可能想将其设置为 json
。很可能您的前端正在使用 JSON,或支持列表的解析器,这解释了为什么您看不到这个。