Due to the fact that
Publishable is common Django model, it is possible to
simply extend it with your custom model. When doing this, you effectively adding
your custom model to whole Ella machinery and all publishing-related stuff
is ready for you out-of-the box!
Let’s have a look at real-world example. During this walkthrough, we will try to create a publishable video that will have YouTube video code as source. We will keep it simple and use YouTube’s video player to show the video itself.
The very first step is to create your own application using the standard Django way:
django-admin.py startapp video
After creating the app to hold it, let’s define the class itself. If you are acustomed to Django models, this is going to look very familiar to you.:
# in models.py within your video application from django.db import models from django.utils.translation import ugettext_lazy as _ from ella.core.models import Publishable class YoutubeVideo(Publishable): code = models.CharField(max_length=20, title=_('Code')) class Meta: verbose_name = _('Youtube video') verbose_name_plural = _('Youtube videos') def __unicode__(self): return self.code
If you want to examine whats is going on behind the scenes when subclassing
Django models, have a look at Django model inheritance. We are using
Multi-table inheritance so that each
Publishable subclass has a hidden
publishable_ptr - to the
Publishable object. This pointer
also acts as PK in the DB table.
Next step is to put the new app to the settings.:
INSTALLED_APPS = ( 'ella.core', 'ella.articles', ... 'yourproject.video', )
Finally, resync your database so the DB table for the class is created:
By defining this, we already have a working publishable object, nothing more is needed. Of course, in real world, you would probably need to do some polishing (adding better title, etc.), but for now, this is enough.