的定製經理我延長默認模型管理器和添加特定的緩存邏輯吧:PyCharm不明白模型
class ReadOnlyManager(manager.Manager):
use_for_related_fields = True
def create(self, **kwargs):
obj = super(ReadOnlyManager, self).create(**kwargs)
cache.cache_read_only_object(obj)
...
return obj
def update(self, *args, **kwargs):
raise ReadOnlyException()
def by_id(self, object_id):
return cache.retrieve_read_only_object(self.model, object_id)
def by_lookup(self, lookup_key, lookup_value):
return cache.retrieve_read_only_object_by_lookup(self.model, lookup_key, lookup_value)
然後,我創建了一個使用它的抽象模型:
class ReadOnlyModel(models.Model):
class Meta:
abstract = True
objects = ReadOnlyManager()
我使用它在具體的模型:
class TokenType(ReadOnlyModel):
code = models.CharField(_('code'), max_length=30, unique=True)
description = models.CharField(_('description'), max_length=100)
lookups = {
'code': 'code'
}
當我試圖調用特定的方法進行自定義緩存,例如* by_id *:
TokenType.objects.by_id(1) # This code works
PyCharm突出顯示它並寫入「未解析的屬性參考」警告。當我在TokenType.
之後按CMD +空格時,我看到,自動填充框包含兩個對象項目:一個標有功能圖標並具有類型ReadOnlyManager,第二個 - 具有方法圖標並具有類型管理器。
它是PyCharm的bug嗎?如何在自定義管理器中爲其他方法啓用autocomlete?
單獨從你的問題,我建議你在jetbrains上使用IssueTracker,他們真的快速拿起這些東西 –
@ArgsKwargs,謝謝,張貼它。獲得答案時將更新此主題。 – Marboni
@Marboni,JetBrains的任何迴應?剛發現這個問題煩人:) – Munhitsu