Python 使用Django';插入数据时进行内联选择;s-ORM模型

Python 使用Django';插入数据时进行内联选择;s-ORM模型,python,django,django-models,sql-insert,Python,Django,Django Models,Sql Insert,我目前正在尝试优化下面的代码,这段代码在我当前的项目中被频繁调用 Hit(link = self.link, ip = self.request.META['REMOTE_ADDR'], referrer = self.request.META['HTTP_REFERER'], country = Country.objects.filter(shorthand=country_code).get() ).save() 它生成以下SQL查询(出于测

我目前正在尝试优化下面的代码,这段代码在我当前的项目中被频繁调用

Hit(link     = self.link,
    ip       = self.request.META['REMOTE_ADDR'],
    referrer = self.request.META['HTTP_REFERER'],
    country  = Country.objects.filter(shorthand=country_code).get()
).save()
它生成以下SQL查询(出于测试目的,SQLite后端):

其中,
DE
是国家代码,
83
是由SELECT查询返回的ID

有没有办法告诉Django将查询合并成一个查询?我知道传递未知国家代码时会发生异常,发布的代码仅用于解释问题。我在想这样的事情:

INSERT INTO "ucp_hit" ("link_id", "ip", "referrer", "country_id")
VALUES (1, '127.0.0.1', 'http://127.0.0.1:8000/ucp/manage_links',
        (SELECT "id" FROM "ucp_country" WHERE "ucp_country"."shorthand" = 'DE'));

如果找不到请求的国家/地区,则应在查询中插入
NULL
。可以告诉Django以某种方式生成这样的查询吗?

我不确定这种优化是否会显著提高性能。如果您确定这是一个瓶颈,为什么不将整个国家表加载到内存中呢?我已经考虑过这样做,但是我很好奇是否有办法按照我发布的方式将其存档。
INSERT INTO "ucp_hit" ("link_id", "ip", "referrer", "country_id")
VALUES (1, '127.0.0.1', 'http://127.0.0.1:8000/ucp/manage_links',
        (SELECT "id" FROM "ucp_country" WHERE "ucp_country"."shorthand" = 'DE'));