0

Hello guys I am new in Django REST API. I want your help.

I am trying to join my two models : User and blogs to get specific api output like this:

{
        "blog_id": 1,
        "title": "first blog",
        "description": "hola",
        "image": "/images/phone.jpg",
        "create_at": "2021-04-08T14:24:51.122272Z",
        "update_at": "2021-04-08T14:37:00.287746Z",
        "user": 1,
        "user_name": "superuser",
        "first_name": "Dannis",
        "email": "[email protected]"
 }

Here is the models.py

class Blog(models.Model):
    blog_id = models.AutoField(primary_key=True, editable=False)
    title = models.CharField(max_length=128,null=False,blank=False)
    description = models.TextField(null=True,blank=True)
    image=models.ImageField(null=True,blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    create_at = models.DateTimeField(auto_now_add=True, editable=False)
    update_at =  models.DateTimeField(auto_now=True,editable=False)


    def __str__(self):
         return f'{self.user.username}     {self.title}       {self.create_at}    {self.update_at}'





class UserActive(models.Model):
    user_active_id = models.AutoField(primary_key=True, editable=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, editable=False)
    last_active = models.DateTimeField(auto_now_add=True, editable=False)

Here is the views.py

@api_view(['GET'])
def get_blogs(request):
    blogs = Blog.objects.all()
    serializer = BlogSerializers(blogs, many=True)
    return Response(serializer.data)

@api_view(['GET'])
def get_users(request):
    user = User.objects.all()
    serializer = UserSerializer(user, many=True)
    return Response(serializer.data)

here is the serializers.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'username', 'email', 'first_name', 'is_staff', ]


class BlogSerializers(serializers.ModelSerializer):
    class Meta:
        model = Blog
        fields = '__all__'

Please Help me out. I will be so grateful

1 Answer 1

1

You need to tell the BlogSerializer to use the UserSerializer for the user field:

class BlogSerializers(serializers.ModelSerializer):
    user = UserSerializer()
    class Meta:
        model = Blog
        fields = '__all__'
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.