1
以下代码是将自定义管理器添加到模型的TranslatedContent类的一部分。Django在运行时扩展自定义管理器。混合风格?
if hasattr(cls, 'objects'):
if cls.objects.__class__ == models.Manager:
# default manager, override
cls.add_to_class('objects', TranslationManager()
else:
# there is a custom manager, don't override
cls.add_to_class('translated', TranslationManager())
当自定义管理器已经存在时,它会为管理器使用不同的名称。 (在这种情况下'翻译')这不是我想要的。
如何使用相同的名称('objects')并仍然使用TranslationManager()覆盖它? 而不是覆盖,这将是一个覆盖/扩展。
谢谢,你是对的,我会去与文件选项。如果有自定义管理器存在,是否“未做”警告? – 2012-02-28 09:57:12
这是有争议的。如果它足够重要,因为它们确实需要使用'翻译管理器',并且基本上只是使用警告作为提醒(即,如果他们忽视这样做,那只是因为他们忘了,并不是因为他们没有选择到),那么警告也许是适当的。否则,最好不要管它。 – 2012-02-28 15:14:45