我是Django REST框架的新手。
我的模型的相关部分看起来像这样(简化):
class Action(models.Model):
type = models.CharField()
bonus = models.IntegerField()
class User(models.Model):
auth = models.OneToOneField(AuthUser)
display_name = models.CharField()
class Comment(models.Model):
contributor = models.ForeignKey(User)
content = models.TextField()
class Activity(models.Model):
user = models.ForeignKey(User)
target_comment = models.ForeignKey(Comment)
action = models.ForeignKey(Action)
字符串
我希望我的一个API端点能够返回如下内容:
{
...
"comments":
[
{
"id": 1,
...
"curr_user_upvoted": true
},
...
]
}
型
我知道为了获取“Curr_user_upvoted”的值而需要执行的查询,但我不知道如何使它成为API表示的一部分。
我知道如何创建自定义关系字段,但这没有帮助,因为“Curr_user_upvoted”既不是字段也不是关系。
你知道吗?
2条答案
按热度按时间mwecs4sa1#
你可以创建一个SerializerMethodField来完成这个任务。这只是序列化器类上的一个方法,它返回你想要的值。
方法名默认为
get_curr_user_upvoted
-换句话说,它应该是get_
后跟字段名,尽管如果您愿意,可以向字段传递显式的method_name
参数。ds97pgxw2#
这里有一些解决方案。
1.首先使用序列化方法字段。
字符串
1.将其添加到模型类中。
型
你可以通过这种方式获取当前用户
https://stackoverflow.com/a/21786764/14387799
1.添加自定义字段
型
为此,您需要添加将请求传递到上下文
型