Python Django RESTful API错误“;键入对象';用户';没有属性'_meta&x27&引用;

Python Django RESTful API错误“;键入对象';用户';没有属性'_meta&x27&引用;,python,django,rest,django-rest-framework,cqlengine,Python,Django,Rest,Django Rest Framework,Cqlengine,我正在尝试用django rest框架和cassandra构建RESTful API,在一步一步地学习官方的django rest框架教程之后,我遇到了这个错误 Traceback: File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 132. response = wrapped_callback(request, *callback_args, **callba

我正在尝试用django rest框架和cassandra构建RESTful API,在一步一步地学习官方的django rest框架教程之后,我遇到了这个错误

Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request,  *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py" in wrapped_view
58.         return view_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" in   dispatch
456.             response = self.handle_exception(exc)
File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" in   dispatch
444.             self.initial(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" in    initial
359.         self.check_permissions(request)
File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" in check_permissions
304.             if not permission.has_permission(request, self):
File "/usr/local/lib/python2.7/dist-packages/rest_framework/permissions.py" in has_permission
125.         perms = self.get_required_permissions(request.method, queryset.model)
File "/usr/local/lib/python2.7/dist-packages/rest_framework/permissions.py" in get_required_permissions
104.             'app_label': model_cls._meta.app_label,

Exception Type: AttributeError at /users/
Exception Value: type object 'User' has no attribute '_meta'
这是我的密码

url.py

from django.conf.urls import  url
from rest_framework.urlpatterns import format_suffix_patterns
from tutorial import views

urlpatterns = [
    # Examples:

    url(r'^users/$', views.UsersList.as_view()),
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view()),
]


urlpatterns = format_suffix_patterns(urlpatterns)
import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
# Create your models here.

class User(Model):
    id = columns.UUID(primary_key=True, default=uuid.uuid4)
    username = columns.Text(max_length=30, required=True)
    password = columns.Text(max_length=55, required=True)
    gender = columns.UUID(default=0)
    languages = columns.List(value_type=columns.UUID)
    friends = columns.Set(value_type=columns.UUID)
from rest_framework import serializers
from tutorial.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'position', 'gender', 'status', 'language')
from tutorial.models import User
from tutorial.serializers import UserSerializer
from rest_framework import generics

class UsersList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
序列化程序.py

from django.conf.urls import  url
from rest_framework.urlpatterns import format_suffix_patterns
from tutorial import views

urlpatterns = [
    # Examples:

    url(r'^users/$', views.UsersList.as_view()),
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view()),
]


urlpatterns = format_suffix_patterns(urlpatterns)
import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
# Create your models here.

class User(Model):
    id = columns.UUID(primary_key=True, default=uuid.uuid4)
    username = columns.Text(max_length=30, required=True)
    password = columns.Text(max_length=55, required=True)
    gender = columns.UUID(default=0)
    languages = columns.List(value_type=columns.UUID)
    friends = columns.Set(value_type=columns.UUID)
from rest_framework import serializers
from tutorial.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'position', 'gender', 'status', 'language')
from tutorial.models import User
from tutorial.serializers import UserSerializer
from rest_framework import generics

class UsersList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
视图.py

from django.conf.urls import  url
from rest_framework.urlpatterns import format_suffix_patterns
from tutorial import views

urlpatterns = [
    # Examples:

    url(r'^users/$', views.UsersList.as_view()),
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view()),
]


urlpatterns = format_suffix_patterns(urlpatterns)
import uuid
from cassandra.cqlengine import columns
from cassandra.cqlengine.models import Model
# Create your models here.

class User(Model):
    id = columns.UUID(primary_key=True, default=uuid.uuid4)
    username = columns.Text(max_length=30, required=True)
    password = columns.Text(max_length=55, required=True)
    gender = columns.UUID(default=0)
    languages = columns.List(value_type=columns.UUID)
    friends = columns.Set(value_type=columns.UUID)
from rest_framework import serializers
from tutorial.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'position', 'gender', 'status', 'language')
from tutorial.models import User
from tutorial.serializers import UserSerializer
from rest_framework import generics

class UsersList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

提前感谢您的支持。

据我所知,cassandra的模型没有实现元类,这是使用rest\u framework等应用程序所必需的。您需要实现与django兼容的模型才能使用rest\u框架

如django cassandra engine的一位开发者所述:

cqlengine很快将被合并到python驱动程序中。在此之后,我们可以考虑一下,但重要的是要知道,django cassandra引擎并不意味着与django车型完全兼容

Github问题

参考此项目


它使用Serializer.Serializer而不是Serializer.ModelSerializer

您将无法在视图中使用或使用任何依赖于Django模型的权限类,因为您使用的模型不兼容。