【问题标题】:How can i add new field into drf query output?如何将新字段添加到 drf 查询输出中?
【发布时间】:2020-11-26 16:22:09
【问题描述】:

Drf get_object中有get查询

query_get = get_object_or_404(My_model, id=1)

我想在这个输出中添加新字段。但不工作。 当我使用

 query_get['new_field']='1' 

然后返回那个,但不能在输出中添加new_field。

【问题讨论】:

  • 你试过query_get.new_field = "1"吗?
  • 是的..它没有工作

标签: python django django-rest-framework


【解决方案1】:

如果你使用的是序列化器,你可以通过添加methodfield来使用它,如下所示。

class MyModelSerializer(ModelSerializer):
    new_field = serializers.SerializerMethodField()

    @staticmethod
    def get_new_field(obj):
        return "1"

【讨论】:

    【解决方案2】:

    get_object_or_404() 返回一个对象,而不是一个查询集。因此,在您的情况下,它将返回一个 id 为 1 的 My_model 实例。

    将额外字段传递给模板的方式取决于您使用的是基于类的视图还是基于函数的视图。

    如果是基于函数的视图:

    query_get = get_object_or_404(My_model, id=1)
    context['query_get'] = query_get
    context['new_field'] = '1'
    return render(request, "my_template.html", context)
    

    使用基于类的视图,您可以覆盖 get_context_data() 方法:

    def get_context_data(self, **kwargs):
            # Call the base implementation first to get a context
            context = super().get_context_data(**kwargs)
            
            # Add data to the context
            query_get = get_object_or_404(My_model, id=1)
            context['query_get'] = query_get
            context['new_field'] = '1'
            return context
    

    【讨论】:

    • 谢谢..但我忘了说这个问题出在drf django
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2019-01-01
    • 2021-11-08
    • 1970-01-01
    • 2018-03-10
    • 2017-11-15
    相关资源
    最近更新 更多