python - 类型对象 'Users' 没有属性 '_meta'

标签 python json serialization cassandra django-rest-framework

我正在使用 cassandra 数据库和 django,我想使用 Django-rest-frame work 中的序列化程序序列化数据。

模型.py

import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model

class Users(Model):
    read_repair_chance = 0.05 # optional - defaults to 0.1
    uid      = columns.UUID(primary_key=True, default=uuid.uuid4)
    age    = columns.Integer(index=True)
    phno    = columns.Text(required=True)
    uname     = columns.Text(required=True)

    class Meta:
        verbose_name_plural = "user_details"

序列化程序.py
from rest_framework import serializers
from user_details.models import Users

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = Users
        fields = ('uid','uname','age','phno')

View .py
from user_details.models import Users
from django.http import Http404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from user_details.serializers import UserSerializer

class UserList(APIView):
    def get(self, request , format = None):
        users = Users.objects.all()
        serializer = UserSerializer(users,many = True)
        return Response(serializer.data)

错误
AttributeError at /show_details/
type object 'Users' has no attribute '_meta'
Request Method: GET
Request URL:    http://127.0.0.1:8000/show_details/
Django Version: 1.8.5
Exception Type: AttributeError
Exception Value:    
type object 'Users' has no attribute '_meta'

我应该进行哪些更改才能以序列化 json 格式显示数据。我已经尝试使用类似的带有 MySQL 数据的 serializer.py 文件来显示它,因为它工作正常。我的理解是当我调用 Users.objects.all() 时它会显示
>>> from user_details.models import Users
>>> Users.objects.all()
<cassandra.cqlengine.query.ModelQuerySet object at 0x045614F0>
>>>

那么如何检索数据并将其序列化。

最佳答案

我有同样的问题,但在进行以下修改后,它工作得很好。

serializers.py

  • 而不是使用serializers.ModelSerializer,使用serializers.Serializer。
    class UserSerializer(serializers.Serializer):
        uid = serializers.UUIDField()
        age = serializers.IntegerField()
        phno = serializers.CharField()
        uname = serializers.CharField()
    
        def create(self, validated_data):
            return Users.objects.create(validated_data)
    
        def update(self, instance, validated_data):
            instance.uid = validated_data.get('uid', instance.uid)
            instance.age = validated_data.get('age', instance.age)
            instance.phno = validated_data.get('phno', instance.phno)
            instance.uname = validated_data.get('uname', instance.uname)
            instance.save()
            return instance
    
  • 关于python - 类型对象 'Users' 没有属性 '_meta',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33195591/

    相关文章:

    ruby-on-rails - 使用 response_to ... format.json 和 jQuery Form Plugin by malsup

    java - Jersey/Jaxb 返回字符串列表而不是整数

    jquery - SerializeArray 未拾取禁用字段

    Java序列化导致并发修改异常

    python - 从源代码构建 Python 为 64 位

    python - 如何在Python中获取从IoT Hub发送到设备的消息的(反馈)确认?

    python - 在 Python Matplotlib 中绘制静态生命游戏模式

    json - 将 JSON 映射到 Apama 事件

    c - 如何使用 msgpack-c 正确解包和提取数据?

    python - 无法在 Windows 上处理 python 子进程 stderr