Как интегрировать данные профиля аутентифицированного пользователя в Django Model
Здравствуйте, дружелюбные люди,
Я хочу создать API, который может обслуживать данные, используя фреймворк Django Rest. Цель состоит в том, чтобы создать модель, которая может добавить данные профиля аутентифицированного пользователя в пользовательскую модель, пока что я могу обслуживать данные с помощью views.py, но это должно быть сделано неявно, как из Models
views.py
class MessageView(APIView):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
def get(self, request,*args, **kwargs):
all_messages = Message.objects.all()
message_serializer = MessageSerializers(data = all_messages, many=True)
message_serializer.is_valid()
current_user = request.user
data = {
'user_id': current_user.id,
'messages': message_serializer.data,
'first_name': current_user.first_name,
'last_name': current_user.last_name,
'email': current_user.email,
}
return Response(data , status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs):
message_data = request.data
current_user = request.user
data = {
'user_id': current_user.id,
'first_name': current_user.first_name,
'last_name': current_user.last_name,
'email': current_user.email,
}
create_message = Message.objects.create(message=message_data['message'] , created_by_id=current_user.id)
create_message.save()
# serializer = MessageSerializers(create_message)
data={
'message': 'success',
'status': status.HTTP_201_CREATED
}
return Response(data ,status=status.HTTP_201_CREATED)
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Message(models.Model):
id = models.AutoField(primary_key=True)
message = models.CharField(max_length=500)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
created_by = models.OneToOneField(User, on_delete=models.CASCADE)
def __str__(self):
return self.message
Вывод, который я получаю
{
"user_id": 2,
"messages": [
{
"id": 1,
"message": "Testing message API",
"created_at": "2022-05-16T23:19:08.430849+05:30",
"updated_at": "2022-05-16T23:19:08.437935+05:30",
"created_by": 2
}
],
"first_name": "Mr",
"last_name": "x-men",
"email": "x-men@mail.com"
}
Желаемый вывод Вместо идентификатора пользователя я хочу получить данные профиля пользователя
{
"messages": [
{
"id": 1,
"message": "Testing message API",
"created_at": "2022-05-16T23:19:08.430849+05:30",
"updated_at": "2022-05-16T23:19:08.437935+05:30",
"created_by": {
"user_id": 2,
"first_name": "Md",
"last_name": "tausif",
"email": "tausif@mail.com"
}
],
}
Любезно предоставьте решения Спасибо!