Django's cached framework and @cached_property are two different things, though both has "cached" it doesn't mean that they share memory....
https://docs.djangoproject.com/zh-hans/2.0/topics/cache/ https://docs.djangoproject.com/zh-hans/2.0/ref/utils/#module-django.utils.functional Read the docs. 林挺滨 <[email protected]>于2018年6月28日周四 上午10:31写道: > class Log(models.Model): > type = models.CharField(max_length=200, unique=True) > column = SortedManyToManyField(Column, blank=True) > min_column_cnt = models.IntegerField(blank=True, default=0, help_text='0 > equal NULL') > > @cached_property > def column_list_name(self): > return [col.name for col in self.column.all()] > > @cached_property > def column_len(self): > return len(self.column.all()) > > @cached_property > def get_all_column_checker(self): > column_ids = [c.id for c in self.column.all()] > return > ColumnChecker.objects.select_related('column').filter(column_id__in=column_ids) > > > def get_log_attr(log_type): > global log_attr_dict, log_attr_last_update_ts > if (datetime.now() - log_attr_last_update_ts).total_seconds() < > update_log_attr_interval and \ > log_type in log_attr_dict: > return log_attr_dict[log_type] > log_attr_dict[log_type] = > Log.objects.prefetch_related('column').get(type=log_type) > log_attr_last_update_ts = datetime.now() > return log_attr_dict[log_type] > > > Now I use module global var "log_attr_dict" to cache the Log instance, > @cached_property of the instance is work. > > def get_log_attr(log_type): > log_attr = cache.get(log_type) > if not log_attr: > log_attr = Log.objects.prefetch_related('column').get(type=log_type) > cache.set(log_type, log_attr, update_log_attr_interval) > return log_attr > > > But if I use cache api to cache the Log instance, @cache_property of the > instance isn't work. (I use the local memory cache.) > > 赖信桃 <[email protected]> 于2018年6月27日周三 下午9:07写道: > >> Show me your code snippet. >> >> 林挺滨 <[email protected]>于2018年6月27日周三 下午8:44写道: >> >>> When I use cache framework api to cache a model instance, @cached_property >>> of the instance doesn't work. Why? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Django users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/django-users. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/django-users/5b27fa47-c712-460f-a421-1eb1d41c764e%40googlegroups.com >>> <https://groups.google.com/d/msgid/django-users/5b27fa47-c712-460f-a421-1eb1d41c764e%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/django-users. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/CAMv51WQMrueCfWoBV3a0Djr7QhL3mqXcg_Ak5yNt75%3DP2Vy4WA%40mail.gmail.com >> <https://groups.google.com/d/msgid/django-users/CAMv51WQMrueCfWoBV3a0Djr7QhL3mqXcg_Ak5yNt75%3DP2Vy4WA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . > > >> For more options, visit https://groups.google.com/d/optout. >> > > > -- > 祝您 身体健康 > 工作愉快! > > 林挺滨 > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAGdZMg8v2mp%3DOiO3coBFypGZ5O%2B_FLC_5cfnK94CRXax0OHRYw%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAGdZMg8v2mp%3DOiO3coBFypGZ5O%2B_FLC_5cfnK94CRXax0OHRYw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAMv51WTfACztXVaoCv6GgdJBEBh8KKhdfZXHQRYw4d%2BBC_2rOQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

