首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mongoDB的Django REST框架:带基数10的int()无效文本

使用mongoDB的Django REST框架:带基数10的int()无效文本
EN

Stack Overflow用户
提问于 2015-02-15 22:32:07
回答 1查看 1.4K关注 0票数 0

我正在用django (1.5.11)和mongoDB (2.4.9)构建一个网站。由于我想添加REST,我还安装了Django REST框架(3.0.5)。但是,我无法让序列化器正确地处理一个非常简单的模型(参见下面),相反,我得到了以下错误:

代码语言:javascript
复制
ValueError at /api/message/
invalid literal for int() with base 10

我认为这个错误与mongoDB标识符不是整数的事实有关。还请注意,我不想使用MongoEngine (和Django Rest框架Mongoengine),因为我不想停留在django哲学中。

有什么线索或暗示吗?下面是我的应用程序的一个很小的例子。

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
from rest_framework import serializers
from . import models

class MessageSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Message
        fields=('id' , 'text',)

urls.py

代码语言:javascript
复制
from django.conf.urls import patterns, include, url
from . import views

urlpatterns = patterns('',
    url(r'^api/message/$', views.messageList),
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-01 06:55:51

必须在序列化程序中将id字段添加为charfield。

serializers.py

代码语言:javascript
复制
class MessageSerializer(serializers.ModelSerializer):
    id = serializers.CharField()
    class Meta:
        model = models.Message
        fields=('id' , 'text',)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28532007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档