4
我正在尝试将Django和Django REST框架与MongoEngine一起使用,但它似乎不适用于我。我不知道哪里出了问题......也许有人可以帮助我。下面是代码:Django REST框架和MongoEngine的AttributeError
models.py
from mongoengine import *
class Lady(Document):
firstname = StringField()
lastname = StringField()
serializers.py
from rest_framework import serializers
from mongoengine import *
class LadySerializer(serializers.Serializer):
firstname = serializers.CharField(max_length=50)
lastname = serializers.CharField(max_length=50)
def restore_object(self,attrs,instance=None):
if instance:
instance.firstname = attrs.get('firstname', instance.firstname)
instance.lastname = attrs.get('lastname', instance.lastname)
return instance
return Lady(**attrs)
现在我测试,如果序列化的工作原理是使用交互式控制台。我执行以下命令。
from core.models import *
from core.serializers import *
tiger = Lady(firstname='Tiger', lastname="Lily")
serial = LadySerializer(tiger)
serial.data
什么,我得到的是:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/evermean/Code/django/env/pourl/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 499, in data
self._data = [self.to_native(item) for item in obj]
File "/home/evermean/Code/django/env/pourl/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 306, in to_native
value = field.field_to_native(obj, field_name)
File "/home/evermean/Code/django/env/pourl/local/lib/python2.7/site-packages/rest_framework/fields.py", line 164, in field_to_native
value = get_component(value, component)
File "/home/evermean/Code/django/env/pourl/local/lib/python2.7/site-packages/rest_framework/fields.py", line 56, in get_component
val = getattr(obj, attr_name)
AttributeError: 'str' object has no attribute 'firstname'
现在我真的不知道为什么会这样,因为在夫人类将firstname属性?我在这里错过了什么?
谢谢...
你是如何调用你的代码序列化? – karthikr
serial = LadySerializer(tiger)然后serial.data ... – evermean