Efficient Django model for blog post
Before thinking about making it efficient, I would worry more about making it clear, natural, intuitive. In your description you mention the notions "travel plan" and "travel event", and it's not easy to find the correspondence in the code. It would be easier to understand the overall design if the connection was more clear, for example if you had classes like TravelPlan and TravelEvent.

There are some other minor problems too with the code.



Drop this comment:


# Create your models here.



(I know it's automatically generated by Django, you're supposed to delete it after you created some models, which you already did.)



These imports are unused, so it's better to delete them:


import datetime

from django.core.urlresolvers import reverse
from django.core.exceptions import ValidationError
from django.utils import timezone





According to PEP8, you should put 2 blank lines before each class definition.

Also, classes in Python should be named CamelCase without underscores,
which is violated by Post_Entry.



It's good to declare closely related fields next to one another.
For example here:


    created_by = models.ForeignKey(auth_user_model, verbose_name=_("created by"))
    categories = models.ManyToManyField("Category", verbose_name=_("categories"), blank=True)
    created_on = models.DateTimeField(auto_now_add = True)



It would be better to move categories out from between created_by and created_on.