加入博客,用户,用户活动模型,但api只显示博客和用户表数据



我是django rest api的新手。努力学习自己。请帮帮我。

我在获取博客、用户和UserActive模型数据时遇到问题

只获取博客和用户模型数据如下:


[
{
"blog_id": 1,
"user": {
"id": 1,
"password": "pbkdf2_sha256$260000$sGvXY1BbGTEeCADbzdLe9m$Pad1fd3N7CYVvz1jQv5xMRTxikqyOFnfWr6bmqUfv5o=",
"last_login": "2021-04-11T13:46:49.739205Z",
"is_superuser": true,
"username": "superuser",
"first_name": "",
"last_name": "",
"email": "superuser@email.com",
"is_staff": true,
"is_active": true,
"date_joined": "2021-04-08T13:26:43.174410Z",
"groups": [],
"user_permissions": []
},
"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"
}
]

但我想从外部用户模型"LastActive"中获取数据,为此我还在views.py 上添加了ser.objects.all((.select_related('useractive'(

serializer.py是:

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'

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

views.py是:

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

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

models.py是:

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

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 BlogSerializers(serializers.ModelSerializer):
user = UserActiveSerializer()
class Meta:
model = Blog
fields = '__all__'
depth = 1

根据需要,尝试将值depth删除或更改为2。

最新更新