Django эквивалент SQL REPLACE

Есть ли лучшая практика Django ORM для этого 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')
6
задан Adam Nelson 9 September 2010 в 22:51
поделиться