模型.py
from django.db import models
from datetime import timedelta
from django.contrib.auth.models import User
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=50)
description = models.CharField(max_length=3000)
IMPORTANCE = (
('H', 'High'),
('M', 'Medium'),
('L', 'Low'),
)
importance = models.CharField(max_length=1, choices=IMPORTANCE)
deadline = models.DateField()
date_joined = models.DateField(auto_now_add=True)
completed = models.BooleanField(default=False, blank=True, null=True)
objects = models.Manager()
def __str__(self):
return self.title
序列化程序.py
from rest_framework import serializers
from .models import Task
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = '__all__'
user = serializers.Field(source='user.username')
class ListSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ('title','deadline','completed','importance','id','user',)
视图.py
from rest_framework.decorators import api_view
from rest_framework import status, permissions, generics
from rest_framework.permissions import IsAuthenticated
from django.contrib.auth import authenticate, login
from rest_framework.response import Response
from .serializers import TaskSerializer, ListSerializer
from .models import Task
from .permissions import IsOwnerOrReadOnly
class taskCreate(generics.ListCreateAPIView):
queryset = Task.objects.all()
serializer_class = TaskSerializer
permission_classes = [permissions.IsAuthenticated]
@api_view(['POST'])
def taskCreate(request, obj):
serializer = TaskSerializer(data=request.data)
if serializer.is_valid():
obj.user = self.request.user
serializer.save(obj.user)
return Response(serializer.data)