【发布时间】:2021-09-23 02:15:16
【问题描述】:
我正在尝试在 Comment 类的 created_by 字段中获取用户名而不是用户 ID。我的模型如下:
class Comment(models.Model):
thread_id = models.ForeignKey(Thread, on_delete=models.CASCADE)
content = models.TextField()
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
likes = models.IntegerField(default=0)
在序列化器中使用了 slugfield。
class CommentSerializer(serializers.ModelSerializer):
created_by = serializers.SlugRelatedField(
slug_field='email',
queryset=User.objects.all())
class Meta:
model = Comment
fields = ("id", "thread_id", "content", "created_by", "created_at", "likes")
在下面的 api 中,字段 created_by 仍然有用户 ID 而不是电子邮件。
@action(detail=True, methods=["GET"])
def list_comments(self, request, pk):
comments = Comment.objects.filter(
thread_id = pk
)
data = json.loads(serialize('json', comments))
print("**************data**************")
print(data)
return Response(data, status.HTTP_200_OK)
打印出来的数据是这样的:
[{'model': 'blog.comment', 'pk': 20, 'fields': {'thread_id': 19, 'content': 'hi', 'created_by': 2, 'created_at': '2021-07-14T03:34:11.333Z', 'likes': 0}}]
这是因为序列化吗?如何正确获取 created_by 的值作为用户电子邮件而不是 id ?
【问题讨论】:
标签: django field slug json-serialization