django-rest-framework:无法使用序列化程序更新最简单的对象

时间:2014-05-08 18:01:00

标签: django django-rest-framework

我尝试使用序列化程序更新对象,但它根本不会更新任何内容。我构建了最简单的测试应用程序,但仍然没有成功。 我使用 django 1.6.2 django-rest-framework 2.3.13

我的models.py(注意:blanknoblank字段名称具有误导性,我知道。这只是我想尝试之前问题是由于空白字段,但它不是):

from django.db import 

class Test(models.Model):
    blank = models.CharField(max_length=200)
    noblank = models.CharField(max_length=200)

    def __unicode__(self):
        return "{0} - {1}".format(self.blank, self.noblank)

我的serializers.py

from rest_framework import serializers
from update_test.models import Test

class TestSerializer(serializers.ModelSerializer):

    class Meta:
        model = Test

我在shell中做的测试:

In [1]: from update_test.models import *

In [2]: from update_test.serializers import *

In [3]: 

In [3]: 

In [3]: test1 = Test.objects.first()

In [4]: 

In [4]: serializer1 = TestSerializer(test1)

In [5]: serializer1.data
Out[5]: {u'id': 1, 'blank': u'blank1', 'noblank': u'noblank1'}

In [6]: 

In [6]: from rest_framework.renderers import JSONRenderer

In [7]: 

In [7]: json1 = JSONRenderer().render(serializer1.data)

In [8]: json1
Out[8]: '{"id": 1, "blank": "blank1", "noblank": "noblank1"}'

In [9]: 

In [9]: from StringIO import StringIO

In [10]: from rest_framework.parsers import JSONParser

In [11]: 

In [11]: stream1 = StringIO(json1)

In [12]: data1 = JSONParser().parse(stream1)

In [13]: 

In [13]: serializer1 = TestSerializer(data=data1)

In [14]: serializer1.is_valid()
Out[14]: True

In [15]: 

In [15]: serializer1.object
Out[15]: <Test: blank1 - noblank1>

In [16]: 

In [16]: data1[u'blank'] = u'test'

In [17]: data1[u'noblank'] = u'notest'

In [18]: 

In [18]: deser = TestSerializer(test1, data=data1)

In [19]: 

In [19]: deser.data
Out[19]: {u'id': 1, 'blank': u'blank1', 'noblank': u'noblank1'}

In [20]: deser.save()
Out[20]: <Test: blank1 - noblank1>

In [21]: deser.object
Out[21]: <Test: blank1 - noblank1>

从第18行可以看出,我将对象更新并将新数据传递给序列化程序。但是对象和序列化器都没有改变。

这是最简单的示例,它与docs中的示例完全相同。 有人看到我忘记了什么吗?

0 个答案:

没有答案