首页 > 解决方案 > pyorient + Django:我应该如何正确创建模型以便序列化程序可以访问它们?

问题描述

设置.py

from pyorient.ogm import declarative
Node = declarative.declarative_node()
Relationship = declarative.declarative_relationship()

模型/用户.py

from pyorient.ogm.property import *
from my_proj.settings import Node


class User(Node):
    email = String(unique=True)
    password = String()

序列化器/register_serializer.py

from rest_framework import serializers, validators
from users.models.user import User


class RegisterSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('email', 'password')

我得到以下异常

AttributeError: type object 'User' has no attribute '_meta

标签: djangodjango-rest-frameworkorientdbpyorient

解决方案


将属性添加到您的模型中,

class User(Node):
    email = String(unique=True)
    password = String()

    @property
    def my_property(self):
        return "my property data"

然后使用serializers.Serializer而不是serializers.ModelSerializer作为,

class RegisterSerializer(serializers.Serializer):
    email = serializers.EmailField()
    password = serializers.CharField()
    my_property = serializers.CharField()


然后,您将获得序列化数据,

user_obj = User.object.get(id=1)
reg_serializer = RegisterSerializer(user_obj)
serialized_data = reg_serializer.data

推荐阅读