python - 我无法在 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__'
请帮帮我。我会很感激
解决方案
您需要告诉该字段BlogSerializer
使用:UserSerializer
user
class BlogSerializers(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = Blog
fields = '__all__'
推荐阅读
- jquery - 如何使此图像变形功能功能重复?
- java - 为错误的数据类型抛出异常?
- php - laravel 中缺少必需的参数
- java - URL 加字符串
- numbers - 循环播放。为什么会这样?质数
- c# - 如何让我的 TextBlock 使用 DataBinding 更新文本
- java - Selenium chromedriver在linux上打开一个空白页面而不是url
- scala - 如何在scala中替换List [Row]中特定键的值
- ios - 当我关闭它时,如何从 TableViewController 传递数据?
- amazon-web-services - List of external schemas and tables from Amazon Redshift