首页 > 解决方案 > 我无法在 Django rest api 上加入两个模型并获得特定的输出

问题描述

大家好,我是 Django REST API 的新手。我需要你的帮助。

我正在尝试加入我的两个模型:用户和博客以获取特定的 api 输出,如下所示:

{
        "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": "superuser@test.com"
 }

这是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)

这是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)

这是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__'

请帮帮我。我会很感激

标签: pythondjangodjango-rest-framework

解决方案


您需要告诉该字段BlogSerializer使用:UserSerializeruser

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

推荐阅读