在Django REST Framework中创建自定义布尔字段

时间:2016-11-27 12:36:09

标签: python django rest django-rest-framework

我是django休息框架的新手 我的模型的相关部分看起来像这样(简化):

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"既不是一个领域,也不是一个关系 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建SerializerMethodField来执行此操作。这只是序列化程序类上的一个返回所需值的方法。

方法名称默认为get_curr_user_upvoted - 换句话说,它应该是get_后跟字段名称,但如果您愿意,可以将明确的method_name参数传递给字段。