使用Django ORM使用不同模型的值更新对象,这些值由多个列连接,并在其FKs上进行附加筛选
以下是我的模型的外观:使用Django ORM使用不同模型的值更新对象,这些值由多个列连接,并在其FKs上进行附加筛选,django,django-queryset,django-orm,Django,Django Queryset,Django Orm,以下是我的模型的外观: EntryGroup(models.Model): ... EntrySource(models.Model): entry_group = FK(EntryGroup) ... Entry(models.Model): entry_group = FK(EntryGroup) ... EntryItem(models.Model): entry = FK(Entry) attribute_1 = ... attribute_2 =
EntryGroup(models.Model):
...
EntrySource(models.Model):
entry_group = FK(EntryGroup)
...
Entry(models.Model):
entry_group = FK(EntryGroup)
...
EntryItem(models.Model):
entry = FK(Entry)
attribute_1 = ...
attribute_2 = ...
...
EntryItemCandidate(models.Model):
entry_source = FK(EntrySource)
attribute_1 = ...
attribute_2 = ...
existing_entry_item = FK(EntryItem, null=True)
...
我正在尝试实现以下功能:
从模型EntryItemCandidate中获取具有指定字段条目\源\ id(FK EntrySource)的所有对象,并使用满足以下条件的对象EntryItem id更新其现有条目\项字段:
update entry_item_caindidate
set
entry_item_candidate.existing_entry_item = entry_item.id
from
entry_item_candidate
inner join entry_item on
entry_item_candidate.attribute_1 = entry_item.attribute_1
and entry_item_candidate.attribute_2 = entry_item.attribute_2
inner join entry on entry.id = entry_item.entry_id
inner join entry_source on entry_source.id = entry_candidate.entry_source_id
where
entry_source.entry_group_id = entry.entry_group_id
and entry_item_candidate.entry_source_id = {param}
但由于我希望在多个数据库引擎之间移动,所以我希望使用纯查询集而不进行迭代(上面的查询在sqlite上不起作用,但在MSSQL上起作用,因为UPDATE…FROM子句)
这可能吗