Как указать "исключенные_поля" при использовании diff_against в simple_history в Django

Я использую diff_against в simple_history в django. Смотрите "diffing history diffing" в документации по simple_history: https://django-simple-history.readthedocs.io/en/latest/history_diffing.html У меня все работает, но он утверждает: "diff_against also accepts 2 arguments excluded_fields and included_fields to either explicitly include or exclude fields from being diffed." Я не могу понять, как передать эти поля. Вот что у меня работает (без каких-либо включающих или исключающих полей):

def historical_changes(qry, id):
    changes = []
    if qry is not None and id:
        last = qry.first()
        for all_changes in range(qry.count()):
            new_record, old_record = last, last.prev_record
            if old_record is not None:
                delta = new_record.diff_against(old_record)
                changes.append(delta)
            last = old_record
    return changes

и я вызываю его в детальном представлении, используя:

changes = historical_changes(hpn.history.all(), hpn.pk)

Все это работает. Затем я попытался включить "исключающее_поле". Вот что я пробовал, но ничего не сработало:

delta = new_record.diff_against(old_record, excluded_fields('geom'))
or
delta = new_record.diff_against(old_record).excluded_fields('geom')
or
delta = new_record.diff_against(old_record.excluded_fields('geom'))

Возможно, это что-то очень простое, но я не могу разобраться. Любая помощь была бы очень кстати. Спасибо.

Вы должны использовать его следующим образом:

delta = new_record.diff_against(old_record, excluded_fields=['geom'])

diff_against принимает аргумент ключевого слова excluded_fields, а не excluded_fields является методом класса HistoricalRecords.

Вернуться на верх