Sor*_*ona 0 python django web django-rest-framework
我有这些序列化器:
# Tickets
class TicketSerializer(serializers.ModelSerializer):
class Meta:
model = Ticket
depth = 2
class TicketWriteSerializer(serializers.ModelSerializer):
class Meta:
model = Ticket
Run Code Online (Sandbox Code Playgroud)
而这个观点:
class Tickets(generics.ListCreateAPIView):
model = Ticket
serializer_class = TicketSerializer
def create(self, request, *args, **kwargs):
serializer = TicketWriteSerializer(data=request.DATA, files=request.FILES)
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save(force_insert=True)
self.post_save(self.object, created=True)
headers = self.get_success_headers(serializer.data)
serializer = TicketSerializer(serializer.object)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
在我的urls文件中我添加如下:
url(r'^tickets/', Tickets.as_view(model=Tickets), name='tickets')
Run Code Online (Sandbox Code Playgroud)
对于这个型号:
class Ticket(models.Model):
customer = models.ForeignKey('Customer', null=True, blank=True)
act = models.ForeignKey('Act')
row = models.PositiveIntegerField()
seat = models.PositiveIntegerField()
# Price for a seat can go up to 9999.99
price = models.DecimalField(max_digits=6, decimal_places=2)
status = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
现在每当我打电话/门票/我得到:
AttributeError at /tickets/
type object 'Tickets' has no attribute '_default_manager'
Run Code Online (Sandbox Code Playgroud)
我想知道它是怎么来的.我想要的是两个Serializer,所以我可以像使用ForeignKeys一样发送数据"flat"但是使用depth = 2的所有数据检索它们.
编辑: TraceBack:
环境:
请求方法:GET请求URL:http:// localhost:8000/tickets /
Django版本:1.7.1 Python版本:3.4.2已安装的应用程序:('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django .contrib.messages','django.contrib.staticfiles','server','rest_framework','rest_framework.authtoken')已安装的中间件:('django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common .CommonMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware')
回溯:get_response 111中的文件"/usr/lib/python3.4/site-packages/django/core/handlers/base.py".response = wrapped_callback(request,*callback_args,**callback_kwargs)File"/ usr/lib在wrapped_view 57中的/python3.4/site-packages/django/views/decorators/csrf.py".返回view_func(*args,**kwargs)文件"/usr/lib/python3.4/site-packages/django/ views/generic/base.py"在视图69中.在调度403中返回self.dispatch(request,*args,**kwargs)文件"/usr/lib/python3.4/site-packages/rest_framework/views.py" .response 400中的响应= self.handle_exception(exc)文件"/usr/lib/python3.4/site-packages/rest_framework/views.py".response = handler(request,*args,**kwargs)File"/获取493中的usr/lib/python3.4/site-packages/rest_framework/generics.py"返回self.list(request,*args,**kwargs)文件"/usr/lib/python3.4/site-packages /rest_framework/mixins.py"在列表76中.self.object_list = self.filter_queryset(self.get_queryset())文件"/usr/lib/python3.4/site-packages/rest_framework/generics.py"i n get_queryset 296. return self.model._default_manager.all()
异常类型:/ errors/Exception值中的AttributeError:类型对象'Tickets'没有属性'_default_manager'
你设置model=Tickets但是Tickets你的观点,而不是你的模型.
url(r'^tickets/', Tickets.as_view(model=Tickets), name='tickets')
Run Code Online (Sandbox Code Playgroud)
请改用它
url(r'^tickets/', Tickets.as_view(model=Ticket), name='tickets')
Run Code Online (Sandbox Code Playgroud)