是否有此SQL Django的ORM最佳實踐:的Django相當於SQL的更換
REPLACE app_model SET field_1 = 'some val', field_2 = 'some val';
假設:field_1或field_2會對它們(或在我的兩個情況)的唯一密鑰,否則這會總是評估爲INSERT。
編輯:
我最好的個人的答案,現在是這樣的,但它是2-3查詢,其中1應該是可能的:
from django.core.exceptions import ValidationError
try:
Model(field_1='some val',field_2='some val').validate_unique()
Model(field_1='some val',field_2='some val',extra_field='some val').save()
except ValidationError:
Model.objects.filter(field_1='some val',field_2='some val').update(extra_field='some val')
洛爾'get_or_create()'返回一個元組'(對象,創建)'。我幾十次犯了同樣的錯誤。這個函數真的應該重命名爲'get_a_tuple_or_create()' – est 2012-09-03 04:01:52
好抓,@est。固定。 – eternicode 2012-09-07 13:32:36