Если вы не возражаете против необходимости обновления, чтобы увидеть различие (то есть вы видите его только после сохранения модели), тогда более простой подход - добавить в администраторе поле только для чтения, которое указывает на функцию , вот так:
class MyModelAdmin(ModelAdmin):
readonly_fields = ('dates_difference',)
#add your other fields, or put it in a fieldset
fields = ('dates_difference',)
def dates_difference(self, model_instance):
return model_instance.end_date - model_instance.start_date
Поскольку ваша цель - просто показать дополнительную информацию в администраторе модели, это место для размещения кода, а не в виджете поля или классе модели.
Как указано в документации readonly_fields , его поведение практически идентично поведению list_display , то есть вы можете указать его на атрибуты как модели, так и администратора модели, а также вызовы и методы.