此 SQL 是否有 Django ORM 最佳实践:
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')