Created
August 28, 2020 20:54
-
-
Save dobleuber/ebac4092b9dab7c05e15982860da661b to your computer and use it in GitHub Desktop.
Rest-api
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db import models | |
from django.contrib.auth.models import User | |
class Post(models.Model): | |
description = models.CharField(max_length=512) | |
created = models.DateTimeField() | |
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts') | |
picture = models.FileField() | |
title = models.CharField(max_length=128) | |
def __str__(self): | |
return self.title |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.contrib.auth.models import Group, User | |
from rest_framework.serializers import ModelSerializer | |
from instapic_api.instapic_post.models import Post | |
class UserSerializer(ModelSerializer): | |
class Meta: | |
model = User | |
fields = ['url', 'username', 'email', 'groups'] | |
class PostSerializer(ModelSerializer): | |
owner = UserSerializer() | |
class Meta: | |
model = Post | |
fields = [ | |
'description', | |
'created', | |
'owner', | |
'picture', | |
'title', | |
] | |
def create(self, validated_data): | |
print('create called') | |
username = validated_data['owner'] | |
validated_data['owner'] = User.objects.get(name=username) | |
post = Post.objects.create(**validated_data) | |
return post |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.contrib.auth.models import User | |
from rest_framework.viewsets import ModelViewSet | |
from rest_framework import authentication, permissions | |
from instapic_api.instapic_post.models import Post | |
from instapic_api.instapic_post.serializers import ( | |
PostSerializer, | |
UserSerializer | |
) | |
class PostViewSet(ModelViewSet): | |
queryset = Post.objects.all().order_by('-created') | |
serializer_class = PostSerializer | |
authentication_classes = [authentication.TokenAuthentication] | |
permission_classes = [permissions.IsAuthenticated] | |
def create(self, request): | |
request.data['owner'] = request.user | |
request.data['created'] = datetime.now() | |
return super(PostViewSet, self).create(request) | |
class UserViewSet(ModelViewSet): | |
queryset = User.objects.all().order_by('-date_joined') | |
serializer_class = UserSerializer | |
permission_classes = [permissions.IsAuthenticated] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment