我有一個模型,我想保存一個新的實例(行)。我有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])
比我想象的更簡單,謝謝! – Piva 2011-03-17 19:21:54