Reputation: 1
I am new to django and trying a project to authenticate user using token and then user can post a msg on server in response user get msg he created and also has user_id
, username
and email
.
This is a sample of what I want:
{
"id": 102,
"message": "Lorem ipsum",
"created_at": "created time in UTC",
"updated_at": "last updated time in UTC",
"created_by": {
"id": 3,
"username": "testuser",
"email": "[email protected]",
...
}
}
This is what I get:
{
"id": 2,
"msg": "hello",
"created_at": "2022-05-23T08:08:57.758428Z",
"updated_at": "2022-05-23T08:08:57.758428Z",
"created_by": null
}
models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.conf import settings
class MsgModel(models.Model):
id = models.IntegerField(primary_key=True)
msg = models.CharField(max_length=100)
created_at = models.DateTimeField(default=timezone.now)
updated_at = models.DateTimeField(default=timezone.now)
created_by = models.ForeignKey(User, db_column='username', null=True, on_delete=models.CASCADE)
def __str__(self):
return self.msg
serializers.py
from rest_framework import serializers
from .models import MsgModel
class MsgSer(serializers.ModelSerializer):
class Meta:
model = MsgModel
fields = "__all__"
Upvotes: 0
Views: 57
Reputation: 640
You need to include foreign table using serializers like this:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
class MsgSer(serializers.ModelSerializer):
created_by = UserSerializer(read_only=True, many=True)
class Meta:
model = MsgModel
fields = ['id', 'msg', 'created_at', 'updated_at', 'created_by']
Upvotes: 1