C'è una best practice Django ORM per questo SQL:Django equivalente di SQL SOSTITUIRE
REPLACE app_model SET field_1 = 'some val', field_2 = 'some val';
Assunzione: Campo_1 o Campo_2 avrebbe una chiave univoca su di loro (o nel mio caso su entrambi), altrimenti questo sarebbe valutare sempre su un INSERT.
Edit:
Il mio migliore risposta personale in questo momento è questo, ma è 2-3 query in cui 1 dovrebbe essere possibile:
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')
lol 'get_or_create()' restituisce una tupla '(oggetto, creato)'. Ho fatto lo stesso errore dozzine di volte prima. Questa funzione dovrebbe essere rinominata in "get_a_tuple_or_create()' – est
Good catch, @est. Fisso. – eternicode