User.objects.filter/get
에 대한 호출로사용자 개체는 True로 설정되어 있어야합니다. , 내가 할) 나는 User.objects.get (로 전화를 걸하려고 할 때,Django 사용자 관리자를 오버라이드하여 쿼리에서 활성 사용자 만 반환합니다.
class CustomUserManager(UserManager):
def get_query_set(self):
return super(CustomUserManager, self).get_query_set().
filter(is_active=True)
User.objects = CustomUserManager()
User.objects_all = UserManager()
을하지만 :
나는 다음과 같이 사용자 모델에 사용자 지정 관리자와 원숭이 패치를 정의하는 시도 - 지금이 나중에 재 방문 할 표시됩니다,하지만 난 더 이상 갈 전에AttributeError: 'NoneType' object has no attribute '_meta'
, 나는이 같은 원숭이 패치는 유지 보수 측면에서 아주 나쁜 형태 것을 알고 있다고 말하고 싶은 것 우리는 빠른 해결책이 필요합니다.
File "<console>", line 1, in <module>
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 131, in get
return self.get_query_set().get(*args, **kwargs)
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/query.py", line 358, in get
clone = self.filter(*args, **kwargs)
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/query.py", line 621, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/query.py", line 639, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1250, in add_q
can_reuse=used_aliases, force_having=force_having)
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1114, in add_filter
opts = self.get_meta()
File "/Users/zarathustra/Virtual_Envs/fierce-spring-7383/venv/lib/python2.7/site-packages/django/db/models/sql/query.py", line 233, in get_meta
return self.model._meta
AttributeError: 'NoneType' object has no attribute '_meta'
를 사용합니다. 우리는 마감 기한을 넘기 때문에 모든 사용자 관련 코드에 사용하는 모델을 변경하여 버그를 도입하고 싶지 않았기 때문에 다른 솔루션을 사용했습니다. 하지만 다른 사람들이 내 배에 있다면, 대신 이걸 사용하는 것이 좋습니다. –