Customising the admin form can be a bit tricky as the documentation is a bit scarce on that issue.
What I needed to do was add a checkbox which renews the object to the current timestamp.
However, the checkbox is not part of the model, and won't show up unless you specify a custom form. To specify a custom form, fill in the ModelAdmin.form attribute.
Upon saving, we override ModelAdmin.save_model() so it knows how to use the data from the new field elements.
Below is the working source for a customised form.
import datetime
from django import forms
from django.contrib import admin
class JobForm(forms.ModelForm):
renew = forms.BooleanField(label = 'Renew post')
class Meta:
model = Job
class JobAdmin(admin.ModelAdmin):
form = JobForm
def save_model(self, request, obj, form, change):
if change and form.cleaned_data['renew']:
obj.published = datetime.datetime.now()
return super(JobAdmin, self).save_model(request, obj, form, change)
admin.site.register(Job, JobAdmin)
And there you have it!