Models
======

.. note:: You are not *required* to do anything specific with your models; dj-hitcount relies on a ``GenericForeignKey`` to create the relationship to your model's ``HitCount``.

If you would like to add a reverse lookup in your own model to its related ``HitCount`` you can utilize the ``hitcount.mixins.HitCountModelMixin``.

::

    from django.db import models

    from hitcount.mixins import HitCountModelMixin
    from hitcount.conf import settings as hitcount_settings

    # here is an example model with a GenericRelation
    class MyModel(models.Model, HitCountMixin):

      # adding a generic relationship makes sorting by Hits possible:
      # MyModel.objects.order_by("hit_count_generic__hits")
      hit_count_generic = GenericRelation(
          hitcout_settings.HITCOUNT_HITCOUNT_MODEL,
          object_id_field='object_pk',
          related_query_name='hit_count_generic_relation'
      )

    # you would access your hit_count like so:
    my_model = MyModel.objects.get(pk=1)
    my_model.hit_count.hits                 # total number of hits
    my_model.hit_count.hits_in_last(days=7) # number of hits in last seven days

Customization
-------------

``dj-hitcount`` allows you to customize ``HitCount`` model.

1. Define your own ``hitcount`` model inherited from ``HitCountBase``.

2. Now when `models.py` in your application has the definition of a custom hitcount model, you need
   to instruct Django to use it for your project instead of a built-in one::

    # Somewhere in your settings.py do the following.
    # Here `myapp` is the name of your application, `MyHitCount` is the names of your customized model.

    HITCOUNT_HITCOUNT_MODEL = 'myapp.MyHitCount'


3. Run `manage.py migrate` to install your customized models into DB.
