【问题标题】:save django model queryset into another model将 django 模型查询集保存到另一个模型中
【发布时间】:2021-03-26 21:56:46
【问题描述】:

我有两个 Django 模型

class Invoice(models.Model):
      id              = models.IntegerField()
      is_converted    = models.BooleanField(default=False)

此模型保留有关发票和报价的信息

另一个模型包含特定发票/报价的项目详细信息

class Items(models.Model):
      document        = models.Foreignkey(Invoice, on_delete=models.CASCADE)
      price           = models.DecimalField(max_digits=8, decimal_places=2)
      name            = models.CharField(max_length=50)

现在我想将型号Invoice的报价记录转换为销售发票

我已将 Invoice 模型行中的数据复制到另一行(因为我还想保留报价记录)

我的问题是将项目从Item 模型的报价记录复制到新生成的发票记录中。

我试过了

quotation_items = Items.objects.filter(document=id)

这将返回正常的查询集

<QuerySet [<items: items object (238)>, <items: items object (240)>, <items: items object (241)>]>

现在我想将这些记录保存到 Items 模型中,用于转换后的发票。

有没有办法将查询集保存到 Django 模型中?

【问题讨论】:

  • 批量创作可以使用bulk_create

标签: python django django-models


【解决方案1】:

感谢@Marat 的评论,我用bulk_create 解决了这个问题

quotation_items = Items.objects.filter(document=id)

new_item_list = []

    for item_obj in quotation_items:
        item_obj.pk = None                 
        item_obj.document = new_obj          # newly created invoice intance
        new_item_list.append(item_obj)

    tbl_invoice_description.objects.bulk_create(new_item_list)

我想将查询集复制到 pk 和文档列更改的新行中

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 2021-12-29
    • 2020-05-18
    • 2018-12-04
    • 2022-10-14
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多