如何解决如何使用 Django MongoEngine
我正在使用 mongoengine 在 django 和 mongodb 中创建一个测验应用程序。在多项选择模型中。我需要一个变量数组来存储每个问题的所有选项。我是一个完全的初学者,所以需要一点帮助。代码如下:
class multichoice(Document):
m_title = fields.StringField(primary_key=True,max_length=255,verbose_name='Title')
m_question = fields.StringField(verbose_name='Question')
m_question_number = fields.StringField(max_length=255,verbose_name='Question Number')
m_alternatives = fields.StringField(verbose_name='Alternatives')
必填结果
{
"_id": "Which one is the German car company","m_alternatives": ["Honda","BMW"],"m_question": "Which one is the German car company","m_question_number": "2"
}
{
"_id": "world most valuable company is:","m_alternatives": ["Google","Microsoft","Amazon","Facebook","Coca-Cola","Disney","Leisure","Samsung","Louis Vuitton","McDonald's","Apple"],"m_question": "world most valuable company is:","m_question_number": "3"
}
编辑 1
class multichoice(Document):
m_title = fields.StringField(primary_key=True,verbose_name='Question Number')
m_alternatives = fields.ListField(fields.StringField(),verbose_name='Alternatives')
错误(Only lists and tuples may be used in a list field: ['m_alternatives'])
完整追溯
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/content_admin/mcqs/multichoice/add/
Django Version: 3.0.5
Python Version: 3.9.2
Installed Applications:
['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','django_mongoengine','django_mongoengine.mongo_auth','django_mongoengine.mongo_admin','mcqs']
Installed Middleware:
['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\core\handlers\exception.py",line 34,in inner
response = get_response(request)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\core\handlers\base.py",line 115,in _get_response
response = self.process_exception_by_middleware(e,request)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\core\handlers\base.py",line 113,in _get_response
response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\contrib\admin\options.py",line 607,in wrapper
return self.admin_site.admin_view(view)(*args,**kwargs)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\utils\decorators.py",line 130,in _wrapped_view
response = view_func(request,*args,**kwargs)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\views\decorators\cache.py",line 44,in _wrapped_view_func
response = view_func(request,**kwargs)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\contrib\admin\sites.py",line 231,in inner
return view(request,**kwargs)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\contrib\admin\options.py",line 1638,in add_view
return self.changeform_view(request,None,form_url,extra_context)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\utils\decorators.py",line 43,in _wrapper
return bound_method(*args,**kwargs)
File "C:\Program Files\Python39\lib\site-packages\django_mongoengine\mongo_admin\options.py",line 317,in changeform_view
self.save_model(request,new_object,form,not add)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\django\contrib\admin\options.py",line 1081,in save_model
obj.save()
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\mongoengine\document.py",line 387,in save
self.validate(clean=clean)
File "C:\Users\Ali Abdullah\AppData\Roaming\Python\Python39\site-packages\mongoengine\base\document.py",line 432,in validate
raise ValidationError(message,errors=errors)
Exception Type: ValidationError at /content_admin/mcqs/multichoice/add/
Exception Value: ValidationError (multichoice:Capital of India is:) (Only lists and tuples may be used in a list field: ['m_alternatives'])
编辑 2
from django_mongoengine import mongo_admin as admin
from mcqs.models import *
# Register your models here.
class multichoice_admin(admin.DocumentAdmin):
model = multichoice
fields = ('m_question','m_alternatives','m_title','m_question_number',)
admin.site.register(multichoice,multichoice_admin)
解决方法
您可以将 ListField
用于 mongoengine。检查here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。