2016-08-13 5 views
1

Я пытаюсь запустить приложение, которое использует фреймворк django rest. Однако я получаю ошибку импорта «не могу импортировать имя DurationField». Как я могу устранить эту ошибку?не может импортировать имя DurationField

Сообщение об ошибке enter image description here

Views.py

from django.shortcuts import render 
from django.contrib.auth.models import User 
from django.http import Http404 

from restapp.serializers import UserSerializer 
from rest_framework.views import APIView 
from rest_framework.response import Response 
from rest_framework import status 


class UserList(APIView): 

#List all user,create new one 
def get(self,request,format=None): 
    users = User.objects.all() 
    serializer = UserSerializer(users,many=True) 
    return Response(serializer.data) 

def post(self,request,format=None): 
    serializer= UserSerializer(data=request.DATA) 
    if serializer.is_valid(): 
     serializer.save() 
     return Response(serializer.data, status=status.HTTP_201_CREATED) 
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST) 

def delete(self,request,pk, format=None): 
    user = self.get_object(pk) 
    user.delete() 
    return Response(status=status.HTTP_204_NO_CONTENT) 

class UserDetail(APIView): 

#Retrive update,or delete a user instance 

def get_object(self,pk): 
    try: 
     return User.objects.get(pk=pk) 
    except user.DoesNotExist: 
     raise 404 

def get(self,request,pk,format=None): 
    user = self.get_object(pk) 
    user = UserSerializer(user) 
    return Response(user.data) 

def put(self,request,pk,format=None): 
    user = self.get_object(pk) 
    serializer=UserSerializer(user,data = request.DATA) 
    if serializer.is_valid(): 
     serializer.save() 
     return Response(serializer.data) 
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST) 


def delete(self,request,pk,format=None): 
    user = self.get_object(pk) 
    user.delete() 
    return Response(status=status.HTTP_204_NO_CONTENT) 

serializers.py

from django.contrib.auth.models import User 
from rest_framework import serializers 

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
    model = User 
    fields = ('id','username','firstname','last_name','email') 

Он указывает на этот файл serializers.py, строка 18 в качестве источника ошибки.

enter image description here

+2

Где вы использовали 'DurationField' - не можете найти в кодах. – masnun

+1

Он указывает на файл (serializers.py, строка 18), который поставляется с django rest framework. Я добавил sceenshot, взгляните. – brxy

ответ

5

на скриншоте, я могу видеть, что вы используете Django 1.7.

DurationField, который импортируется DRF, был представлен в Django 1.8.

Итак, вам нужно обновить Django, чтобы заставить эту версию DRF работать.