В моей модели userprofile у меня есть метод (превращенный в свойство), который возвращает набор запросов на основе собственного менеджера другой модели.
Конкретно, пользователь может продавать не скоропортящиеся и скоропортящиеся товары, а на уровне модели элементов действуют несколько пользовательских менеджеров, которые содержат логику (и возвращают наборы запросов) для определения того, погиб ли элемент. В профиле пользователя существует метод, который возвращает что-то похожее на:
Item.live_objects.filter(seller=self.user),
где non_perished_objects является одним из указанных пользовательских менеджеров.
Если, однако, элемент добавлен, он никогда не отражается с помощью этих методов userprofile. Только при перезапуске сервера (и при переполнении кэшей набора запросов) результаты будут правильными.
Есть ли способ заставить Django перезагрузить данные и удалить кэшированные данные?
Заранее спасибо!
Обновление:
class LiveItemsManager(models.Manager):
kwargs = {'perished': False,
'schedule__start_date__lte': datetime.datetime.now(),
'schedule__end_date__gt': datetime.datetime.now()}
def get_query_set(self):
return super(LiveItemsManager, self).get_query_set().filter(**self.kwargs)
class Item(models.Model):
live_objects = LiveItemsManager()
perished = models.BooleanField(default=False)
seller = models.ForeignKey(User)
Как видите, есть также модель Schedule, содержащая поле start_date, end_data и item_id.
В модели UserProfile у меня есть:
def _get_live_items(self):
results = Item.live_objects.filter(seller=self.user)
return results
live_items = property(_get_live_items)
Проблема в том, что при вызове свойства live_items возвращаемые результаты являются только кэшированными.
(PS: не обращайте внимания на настройку моделей; есть причина, по которой модели такие, какие они есть:))