Reputation: 39
I am trying to run an application that uses django rest framework.However am getting the import error "cannot import name DurationField".How do i resolve this error ?
Error message 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')
It points to this file serializers.py,line 18 as source of error.
Upvotes: 1
Views: 3017
Reputation: 11906
From the screenshot, I can see you're using Django 1.7.
The DurationField
that is being imported by DRF was introduced in Django 1.8.
So you have to upgrade your Django to get this version of DRF to work.
Upvotes: 5