Hi,
I made a post about this on the issue tracker and here is a patch for
it. It seems like a better idea to decouple index_model from the
model itself for a number of reasons, the most important being that
this allows you to index models which you can/don't want to modify
(django.contrib, for example).
The patch below works, provided you define a new item in your settings
file called INDEXER_INDEXES, like so:
INDEXER_INDEXES = {
'test.test': 'test_djapian.test.models.Test_index'
'comments.comment: 'test_djapian.test.indexes.Comment_index'
}
Index: djapian/signals.py
===================================================================
--- djapian/signals.py (revision 38)
+++ djapian/signals.py (working copy)
@@ -3,11 +3,24 @@
Here are the post_save and the pre_delete signals
"""
from djapian.models import Change
+from django.conf import settings
+def get_index_model(model):
+ '''Return the `index_model` value from
settings.INDEXER_INDEXES'''
+ key = "%s.%s" % (model._meta.app_label, model._meta.module_name)
+ try:
+ return settings.INDEXER_INDEXES[key]
+ except KeyError, e:
+ error_msg = "The object `%s` is not defined in your settings
file\n" % (unicode(model))
+ err = open('djapian_error.log','a')
+ err.write(error_msg)
+ err.close()
+ print error_msg
+
def post_save(sender, instance):
'''Create the Change object to update the index'''
- Change(model=sender.index_model, did=instance.id).save()
+ Change(model=get_index_model(sender), did=instance.id).save()
def pre_delete(sender, instance):
'''Create the Change object to update the index'''
- Change(model=sender.index_model, did=instance.id,
is_deleted=True).save()
+ Change(model=get_index_model(sender), did=instance.id,
is_deleted=True).save()