【问题标题】:How can I delete a <dict> object in a Django QuerySet如何在 Django QuerySet 中删除 <dict> 对象
【发布时间】:2020-11-04 03:00:35
【问题描述】:

我在 Django 中有这个查询集(我们称之为 qs),它有 3 个不同的对象实例。除了图像文件之外,其中两个是相同的:

    <QuerySet [
    
    {'investment__name': 'Stefano', 'investment__net_returns': Decimal('11.00'), 
    'investment__my_images__image': '**investments/None/IMG01.JPG**'}
    
    {'investment__name': 'Stefano','investment__net_returns': Decimal('11.00'),
    'investment__my_images__image': '**investments/None/IMG02.JPG**'},
    
    {'investment__name': 'Alberto','investment__net_returns': Decimal('22.00'),
    'investment__my_images__image': '**investments/None/IMG03.JPG**'}
    
    ]>

我只想在模板中呈现查询集的第一个对象和第三个对象。我正在尝试删除第二个,但我不知道如何删除查询集对象。

我尝试的方式是这样的:

    inv=""
    for i,investment_instance in enumerate(qs):
        if investment_instance['investment__name']==inv:
            investment_instance.delete()
        else:
            inv=investment_instance['investment__name']
            im=investment_instance['investment__my_images__image']

当然,investment_instance.delete() 不起作用。

有什么想法吗?

【问题讨论】:

  • 使用什么查询来创建您的 qs
  • Someobject.objects.values('field1', 'field2').annotate(Sum('field2'))

标签: python-3.x django django-views django-queryset


【解决方案1】:

假设您将 QuerySet 存储在“temp_query”变量中

temp_query = list(temp_query)

del temp_query[1] // 从列表中删除第二个元素。

【讨论】:

  • 谢谢,效果很好!我想知道这是否是唯一的方法(查询集转换为列表),或者有更多的“Django 方式”来做到这一点……但再次感谢,它奏效了。
  • 我从未遇到过这种情况,但您也可以在过滤器中使用 .exclude() 功能。这将排除不必要的对象。
猜你喜欢
  • 2013-05-04
  • 2021-05-17
  • 2020-10-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 2020-03-15
  • 2012-05-17
  • 2011-07-25
相关资源
最近更新 更多