Использую DRF
В модели нет поля, которое нужно для работы api, нужно добавить токен в запрос.
models.py
from django.db import models
from accounts.models import User
class Post(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
like = models.BigIntegerField(default=0)
text = models.TextField(max_length=1000, blank=True, default='')
serializers.py
from django.contrib.auth import get_user_model
from post.models import Post, User
from rest_framework.serializers import (
CharField,
ModelSerializer,
SerializerMethodField,
ValidationError
)
class PostCreationSerializer(ModelSerializer):
token = SerializerMethodField()
text = CharField(required=False, allow_blank=True)
def get_token(self, obj):
pass
class Meta:
model = Post
fields = (
'text',
'token'
)
def validate(self, data):
text = data['text']
user = User.objects.get(id=1)
post = Post.objects.create(owner=user, text=text)
return data
views.py
class PostCreationAPIView(APIView):
permission_classes = [AllowAny]
serializer_class = PostCreationSerializer
# queryset = Post.object.all()
def post(self, request, *args, **kwargs):
data = request.data
serializer = PostCreationSerializer(data=data)
if serializer.is_valid(raise_exception=True):
new_data = serializer.data
return Response(new_data, status=HTTP_200_OK)
return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
SerializerMethodField() только для чтения, мне нужно добавить поле token, чтобы добавлять в запрос и ввести ограничения на создание модели, если токен не валидный. Как это можно реализовать?