.. _extension: Writing your own link extension =============================== To extend `django-anylink` lets assume you have a Download model. This model doesn't have a ``get_absolute_url`` method. Theirfore you want to write your own link extension. Lets have a look at the code first. .. code-block:: python from django.core.urlresolvers import reverse from anylink.extensions import BaseLink class DownloadLink(BaseLink): def configure_model(self, model): # configure_model is called by django-anylink upon initialization. # We add a field to anylink model to keep the object reference. # Make sure the field is null-able, anylink will ensure its filled out # if the link type is set to DownloadLink. model.add_to_class(self.get_name(), models.ForeignKey( 'myapp.Download', blank=True, null=True) def get_absolute_url(self, link): # Get the obj instance using the get_name method. obj = getattr(link, self.get_name()) # return a reverse'd url or None if no obj is set. return obj and reverse('myurl', kwargs={'id': obj.pk}) or None As you can see here, the Link extension has two important methods. The ``configure_model`` method and the ``get_absolute_url`` method. Please refer to the comments and the code for more details on this topic.