I am trying to use django-rest-framework-mongoengine to build a webservice using Django and mongodb.
I have an error when I include a url that lists my objects of type Document.
My model file is
class Job(Document):
title = StringField(required=True)
state = StringField(required=True)
My view is
class JobViewSet(GenericAPIView):
queryset = Job.objects.all()
serializer_class = JobSerializer
My url file is
router = routers.MongoSimpleRouter()
router.register(r'jobs', views.JobViewSet)
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
my serializer is
class JobSerializer(DocumentSerializer):
class Meta:
model = Job
fields = ('title', 'state')
I get the following error when I do runserver
`base_name` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.model` attribute.
I tried different view type but all the same error. Any help is greatly appreciated....
I am using
python 2.7.9
Django==1.7.7
django-rest-framework-mongoengine==2.0.2
mongoengine==0.9.0
here is the full stack
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.7.7
Python Version: 2.7.9
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'romeo',
'mongoengine.django.mongo_auth',
'jobs',
'rest_framework',
'rest_framework_mongoengine')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
98. resolver_match = resolver.resolve(request.path_info)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
343. for pattern in self.url_patterns:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
372. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
366. self._urlconf_module = import_module(self.urlconf_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py" in import_module
37. __import__(name)
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_pluginbase.py" in plugin_import
452. fromlist, level)
File "/Users/amer/Workspace/Repository/romeo/romeo/urls.py" in <module>
6. router.register(r'jobs', views.JobViewSet)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/rest_framework/routers.py" in register
60. base_name = self.get_default_base_name(viewset)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/rest_framework_mongoengine/routers.py" in get_default_base_name
11. assert model_cls, '`base_name` argument not specified, and could ' \
Exception Type: AssertionError at /
Exception Value: `base_name` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.model` attribute.