gpt4 book ai didi

python - 如何在不检索外部对象实例的情况下保存 ForeignKey?

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:04 26 4
gpt4 key购买 nike

我有一个模型,我想在其中保存一个新实例(行)。我有 ForeignKey 的主键,但我没有对象本身(假设它来自某个地方)。有什么方法可以在没有原始 SQL 且无需获取实例的情况下保存它吗?

这是模型:

class UserLocale(models.Model):

user = models.ForeignKey(KingUser)
locale = models.ForeignKey(Locale)

现在假设我有语言环境主键 ('en_US') 但我没有对象本身。我正在做的是保存它:

def save_locale(user_instance, locale_name):
locale = Locale.objects.get(pk=locale_name)
UserLocale.objects.create(user=user_instance, locale=locale)

我知道我可以使用原始 SQL 一步完成,但我想知道我是否可以在 Django 查询模型中完成。

编辑:

是的,UserLocale是一个M2M中间表。我知道制作 ManyToMany 字段会更好,但它是遗留代码。

这是我的 SQL 尝试(没有测试,我是手写的,因为我远离代码):

def save_raw_sql(user_instance, locale_name):

query = """
INSERT INTO
project_userlocale (user_id, locale_id)
values (%s, %s)
"""

UserLocale.objects.raw(query, [user_instance.id, locale_name])

最佳答案

您可以只使用 ForeignKey 对象下面的 id 字段:

UserLocale.objects.create(user=user_instance, locale_id=locale)

(我假设您最后一行中对 Locale 的引用实际上应该是 UserLocale)。

关于python - 如何在不检索外部对象实例的情况下保存 ForeignKey?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com