brxy
brxy

Reputation: 39

cannot import name DurationField

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.

enter image description here

Upvotes: 1

Views: 3017

Answers (1)

masnun
masnun

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

Related Questions