【问题标题】:Insert a dictionary in all data of a Django QuerySet在 Django QuerySet 的所有数据中插入字典
【发布时间】:2021-04-30 21:13:06
【问题描述】:

我得到这样的 Django 查询集输出。

<QuerySet 
  [
    {
     'transaction_date': datetime.datetime(2021, 4, 28, 13, 39, 47, 66880, tzinfo=<UTC>), 
     'coin': 200
    },{
      'transaction_date': datetime.datetime(2021, 4, 28, 13, 39, 54, 132439, tzinfo=<UTC>), 
      'coin': 150
    }]>

我想在列表内的所有查询集中插入一个键值对。期望的输出应该是。

    <QuerySet [
    {
      'transaction_date': datetime.datetime(2021, 4, 28, 13, 39, 47, 66880, tzinfo=<UTC>),      
       'coin': 200, 
       'transiction_type':'credit'
    }, {
       'transaction_date': datetime.datetime(2021, 4, 28, 13, 39, 54, 132439, tzinfo=<UTC>),    
       'coin': 150, 
       'transiction_type':'credit'
     } ]>

我已经这样做了。

    coin_withdraw_list =[dict(coin_withdraw,transaction_type="CREDIT") for coin_withdraw in user_withdraw_list]

但我正在寻找是否有任何方法可以使用任何 Django 函数来做到这一点。提前致谢。

【问题讨论】:

    标签: python django django-models django-rest-framework


    【解决方案1】:

    如果您想向 QuerySet 中的所有条目添加带有字符串文字的附加字段,您可以使用 annotate()Value 表达式:

    from django.db.models import CharField, Value
    
    ...
    
    queryset.annotate(transaction_type=Value('credit', output_field=CharField()))
    

    【讨论】:

    • 不工作.. 显示这个错误.. django.core.exceptions.FieldError: 无法解析表达式类型,未知的输出字段
    • 很抱歉。我编辑了我的答案 - 它应该可以解决问题。
    猜你喜欢
    • 2015-02-24
    • 2019-01-14
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多