【问题标题】:Making a custom Boolean field in Django REST Framework在 Django REST Framework 中创建自定义布尔字段
【发布时间】:2016-11-27 12:36:08
【问题描述】:

我是 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”既不是字段也不是关系。
有什么想法吗?

【问题讨论】:

    标签: python django rest django-rest-framework


    【解决方案1】:

    您可以创建一个SerializerMethodField 来执行此操作。这只是序列化器类上的一个方法,它返回你想要的值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 2013-11-15
      • 2023-03-12
      • 2021-08-10
      • 2015-03-02
      • 2014-08-19
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多