LINUX.ORG.RU

История изменений

Исправление Int64, (текущая версия) :

Еще интересно, как лучше лайки подсчитывать и комментарии, у меня сейчас для голосования есть модель:

class Vote(CityModel):
    model_name = models.CharField(max_length=100)
    ref_id = models.PositiveIntegerField()
    user = models.ForeignKey(User)
    delta = models.IntegerField()
И нормально ли просто подчитывать все лайки таким образом:
def likes(self):
    return Vote.city_objects.filter(model_name="comment", ref_id=self.pk, delta__gt=0).count()
Ну это при учете что в данном случае у меня дельта может быть либо 1 либо -1. В таком случае наверное приходится делать обход большой, и может быть не производительно. Либо мне создать какое-то поле в модели Comment к пример `likes_count = models.PositiveIntegerField()` и туда каждый раз сохранять новое значение, когда пользователь проголосует, или может быть лучше в redis сохранять. Наверное еще можно оптимально индексы настроить. И таких моментов много. Вот недавно был момент, что смешанные данные выводит в одном блоке - новости, статьи и мероприятия, всего 5 записей, но они должны быть отсортированы по одному полю, по сути у всех эти модели имеют одинаковые поля, по которым выводятся (наследуются от абстрактной модели Post), я сделал по дурацкому, выбрал по 5 статей, новостей и мероприятий, склеил их в список и отсортировал питоновскими средствами, скорее всего так делать не стоит, но я не понимаю как такое сделать правильно :(

Исправление Int64, :

Еще интересно, как лучше лайки подсчитывать и комментарии, у меня сейчас для голосования есть модель:

class Vote(CityModel):
    model_name = models.CharField(max_length=100)
    ref_id = models.PositiveIntegerField()
    user = models.ForeignKey(User)
    delta = models.IntegerField()
И нормально ли просто подчитывать все лайки таким образом:
def likes(self):
    return Vote.city_objects.filter(model_name="comment", ref_id=self.pk, delta__gt=0).count()
Ну это при учете что в данном случае у меня дельта может быть либо 1 либо -1. В таком случае наверное приходится делать обход большой, и может быть не производительно. Либо мне создать какое-то поле в модели Comment к пример `likes_count = models.PositiveIntegerField()` и туда каждый раз сохранять новое значение, когда пользователь проголосует. Наверное еще можно оптимально индексы настроить. И таких моментов много. Вот недавно был момент, что смешанные данные выводит в одном блоке - новости, статьи и мероприятия, всего 5 записей, но они должны быть отсортированы по одному полю, по сути у всех эти модели имеют одинаковые поля, по которым выводятся (наследуются от абстрактной модели Post), я сделал по дурацкому, выбрал по 5 статей, новостей и мероприятий, склеил их в список и отсортировал питоновскими средствами, скорее всего так делать не стоит, но я не понимаю как такое сделать правильно :(

Исходная версия Int64, :

Еще интересно, как лучше лайки подсчитывать и комментарии, у меня сейчас для голосования есть модель:

class Vote(CityModel):
    model_name = models.CharField(max_length=100)
    ref_id = models.PositiveIntegerField()
    user = models.ForeignKey(User)
    delta = models.IntegerField()
И нормально ли просто подчитывать все лайки таким образом:
def likes(self):
    return Vote.city_objects.filter(model_name="comment", ref_id=self.pk, delta__gt=0).count()
Ну это при учете что в данном случае у меня дельта может быть либо 1 либо -1. В таком случае наверное приходится делать обход большой, и может быть не производительно. Либо мне создать какое-то поле в модели Comment к пример `likes_count = models.PositiveIntegerField()` и туда каждый раз сохранять новое значение, когда пользователь проголосует. Наверное еще можно оптимально индексы настроить. И таких моментов много. Вот недавно был момент, что смешанные данные выводит в одном блоке - новости, статьи и мероприятия, всего 5 записей, но они должны быть отсортированы по одному полю, по сути у всех эти модели имеют одинаковые поля, по которым выводятся (наследуются от абстрактной модели Post), я сделал по дурацкому, выбрал по 5 статей, новостей и мероприятий, склеил их в список и отсортировал питоновскими средствами, скорее всего так делать не стоит, но я не понимаю как такое сделать правильно :(