带有 mongoDB 的 Django REST 框架:以 10 为底的 int() 的无效文字
Django REST framework with mongoDB : invalid literal for int() with base 10
我正在使用 django (1.5.11) 和 mongoDB (2.4.9) 构建一个网站。因为我想添加 REST API,所以我还安装了 Django REST framework (3.0.5)。但是我无法让序列化程序使用非常简单的模型(见下文)正常工作,而是出现此错误:
ValueError at /api/message/
invalid literal for int() with base 10
我认为此错误与 mongoDB 标识符不是整数这一事实有关。另请注意,我不想使用 MongoEngine(和 Django Rest Framework Mongoengine),因为我不想停留在 Django 哲学中。
有什么线索或提示吗?请在下面找到我的应用程序的最小示例。
models.py
from django.db import models
from djangotoolbox import fields
class Message(models.Model):
created_on = models.DateTimeField(auto_now_add=True, null=True)
text = models.TextField()
tags = fields.ListField()
views.py
from django import http, template
from rest_framework import generics, renderers, parsers
from . import models, serializers
def messageList(request):
if request.method == 'GET':
messages = models.Message.objects.all()
serializer = serializers.MessageSerializer(messages, many=True)
return JSONResponse(serializer.data)
class JSONResponse(http.HttpResponse):
def __init__(self, data, **kwargs):
content = renderers.JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
serializers.py
from rest_framework import serializers
from . import models
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = models.Message
fields=('id' , 'text',)
urls.py
from django.conf.urls import patterns, include, url
from . import views
urlpatterns = patterns('',
url(r'^api/message/$', views.messageList),
)
您必须在序列化程序中将 id 字段添加为 charfield
serializers.py
class MessageSerializer(serializers.ModelSerializer):
id = serializers.CharField()
class Meta:
model = models.Message
fields=('id' , 'text',)
我正在使用 django (1.5.11) 和 mongoDB (2.4.9) 构建一个网站。因为我想添加 REST API,所以我还安装了 Django REST framework (3.0.5)。但是我无法让序列化程序使用非常简单的模型(见下文)正常工作,而是出现此错误:
ValueError at /api/message/
invalid literal for int() with base 10
我认为此错误与 mongoDB 标识符不是整数这一事实有关。另请注意,我不想使用 MongoEngine(和 Django Rest Framework Mongoengine),因为我不想停留在 Django 哲学中。
有什么线索或提示吗?请在下面找到我的应用程序的最小示例。
models.py
from django.db import models
from djangotoolbox import fields
class Message(models.Model):
created_on = models.DateTimeField(auto_now_add=True, null=True)
text = models.TextField()
tags = fields.ListField()
views.py
from django import http, template
from rest_framework import generics, renderers, parsers
from . import models, serializers
def messageList(request):
if request.method == 'GET':
messages = models.Message.objects.all()
serializer = serializers.MessageSerializer(messages, many=True)
return JSONResponse(serializer.data)
class JSONResponse(http.HttpResponse):
def __init__(self, data, **kwargs):
content = renderers.JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
serializers.py
from rest_framework import serializers
from . import models
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = models.Message
fields=('id' , 'text',)
urls.py
from django.conf.urls import patterns, include, url
from . import views
urlpatterns = patterns('',
url(r'^api/message/$', views.messageList),
)
您必须在序列化程序中将 id 字段添加为 charfield
serializers.py
class MessageSerializer(serializers.ModelSerializer):
id = serializers.CharField()
class Meta:
model = models.Message
fields=('id' , 'text',)