Я хочу, чтобы пользователи получали «баллы» за выполнение различных задач в моем приложении - от таких задач, как пометка объектов до создания друзей. Я еще не нашел приложение Django, которое упрощает это.
В настоящий момент я думаю, что лучший способ накапливать баллы - это то, что каждое пользовательское действие создает эквивалент «элемента потока», а баллы рассчитываются путем подсчета значения каждого действия, опубликованного в их потоке.
Очевидно, что механика социальных игр - это огромная область, в которой в настоящее время проводится множество исследований. Но с точки зрения развития, какой самый простой способ начать? Я не на том пути или есть лучшие / более простые способы?
Редактировать: для тех, кто хочет очень простую реализацию этого:
Для всех, кто интересуется очень простой реализацией этой идеи, попробуйте создать приложение для «ведения журнала» и поместить его в ваши models.py:
log_models = [Tag, Post, Vote]
class Point(models.Model):
# model fields
def increase_score(sender, instance, signal, *args, **kwargs):
# score logic
for model in log_models:
post_save.connect(increase_score, sender=model)
post_delete.connect(decrease_score, sender=model)
Обратитесь к этому документу, если вы обнаружите, что post_save излучает дважды: http://code.djangoproject.com/wiki/Signals#Helppost_saveseemstobeemittedtwiceforeachsave