Django 模型渲染数字而不是字符串
Django model rendering number instead of string
我正在创建一个博客网站,作者发布博客等。问题是呈现作者的名字,而不是 django 返回一个数字。
我的博客模型:
class Blog(models.Model):
title=models.CharField(max_length=255)
author=models.ForeignKey(User, on_delete=models.CASCADE)
date_posted=models.DateTimeField(auto_now_add=True)
body=models.TextField()
def __str__(self):
return self.title
还有我的序列化程序:
class Meta:
model=Blog
fields=('title', 'author', 'body', 'date_posted')
然而,在 django rest 框架中它呈现一个数字,而它应该是 'admin' 用户:
[
{
"title": "First Blog",
"author": 1,
"body": "Example blog text",
"date_posted": "2022-05-18T23:55:21.529755Z"
}
]
有点困惑,因为没有错误,只是没有渲染 'admin'。任何帮助都会有所帮助谢谢。
它显示了用户对象的主键,即存储在外键字段中的内容。
要遵循用户对象用户名(假设您没有用户序列化程序),您可以创建一个自定义字段,例如,
class Meta:
model=Blog
fields=('title', 'author', 'author_name', 'body', 'date_posted')
author_name = serializers.SerializerMethodField('get_author_name')
def get_author_name(self, obj):
return obj.author.username
要获取完整的作者数据,您需要在 BlogSerializer
中添加 UserSerializer
。
class BlogSerializer(serializers.ModelSerializer):
author = UserSerializer(read_only = True)
class Meta:
model = Blog
fields = ('title', 'author', 'author_name', 'body', 'date_posted', )
希望对您有所帮助。
我正在创建一个博客网站,作者发布博客等。问题是呈现作者的名字,而不是 django 返回一个数字。
我的博客模型:
class Blog(models.Model):
title=models.CharField(max_length=255)
author=models.ForeignKey(User, on_delete=models.CASCADE)
date_posted=models.DateTimeField(auto_now_add=True)
body=models.TextField()
def __str__(self):
return self.title
还有我的序列化程序:
class Meta:
model=Blog
fields=('title', 'author', 'body', 'date_posted')
然而,在 django rest 框架中它呈现一个数字,而它应该是 'admin' 用户:
[
{
"title": "First Blog",
"author": 1,
"body": "Example blog text",
"date_posted": "2022-05-18T23:55:21.529755Z"
}
]
有点困惑,因为没有错误,只是没有渲染 'admin'。任何帮助都会有所帮助谢谢。
它显示了用户对象的主键,即存储在外键字段中的内容。
要遵循用户对象用户名(假设您没有用户序列化程序),您可以创建一个自定义字段,例如,
class Meta:
model=Blog
fields=('title', 'author', 'author_name', 'body', 'date_posted')
author_name = serializers.SerializerMethodField('get_author_name')
def get_author_name(self, obj):
return obj.author.username
要获取完整的作者数据,您需要在 BlogSerializer
中添加 UserSerializer
。
class BlogSerializer(serializers.ModelSerializer):
author = UserSerializer(read_only = True)
class Meta:
model = Blog
fields = ('title', 'author', 'author_name', 'body', 'date_posted', )
希望对您有所帮助。