Форум сайта python.su
Подскажите посредством чего лучше реализовать такую вещь:
-Есть модель где хранится рейтинг юзеров:
class UserRating(models.Model):
user = models.ForeignKey(User)
rating = models.IntegerField(default = 0)
Офлайн
Я думаю лучше всего через RelatedMapping:
class UserRating(models.Model):
user = models.ForeignKey(User, related_name = 'user_rating')
rating = models.IntegerField(default = 0)
user.user_rating
Отредактировано (Окт. 31, 2009 13:01:05)
Офлайн
Попробовал что то так и не понял как через него забрать именно рейтинг, вообщем в итоге сделал так:
class UserRating(models.Model):
user = models.OneToOneField(User)
rating = models.IntegerField(default = 0)
def get_rating_(self):
return UserRating.objects.get(user = self)
User.get_rating = get_rating_
Офлайн
EvgЕсли UserRating должен быть обязательно, то можно то можно повесить на событие сохранения User обработчик (здесь надо понимать, что пользователь сохраняется при каждом входе на сайт - меняется дата последнего входа).
Есть еще проблема в том что у меня не у для всех User задан UserRating и вылетает DoesNotExist, как можно перехватывать это внутри как нибудь чтобы оно автоматом создавало модель, те чтобы тот кто будет пользоваться полем не ловил сам этот случай?
from django.db.models.signals import post_save
def userrating_create_handler(sender, instance, **kwargs):
UserRating.objects.get_or_create(user=instance)
post_save.connect(userrating_create_handler, sender=User)
Офлайн
vvp91Не совсем подходит ситуация такая что у части юзеров объект есть а у части нет. Заходит на сайт 1 юзер а на страницах например может потребоваться вывести для всех, потом обращения с кронов к этим данным если будет тоже не поможет.
Если UserRating должен быть обязательно, то можно то можно повесить на событие сохранения User обработчик
Отредактировано (Ноя. 1, 2009 22:32:02)
Офлайн
EvgОднократный insert as select на базой данных тебя спасет.
Не совсем подходит ситуация такая что у части юзеров объект есть а у части нет. Заходит на сайт 1 юзер а на страницах например может потребоваться вывести для всех, потом обращения с кронов к этим данным если будет тоже не поможет.
Офлайн
но в том то и дело чтобы не хотелось делать никаких реорганизаций а оно все самом перестроилось чтобы по мере, обращений) потом у меня немного специфичная структура юзеры общая сущность для нескольких проектов внутри каждого специфичный профиль, и когда юзер регается в одном проекте не повод создать ему сразу на всех профиль.
Отредактировано (Ноя. 2, 2009 19:27:53)
Офлайн