Numaraya duyarsız aramaları gerçekleştirme Django Auth çerçevesini kullanırken username
numaralı numaralı belgede büyük/küçük harf duyarlı olmayan sorgulamalar yapmam gerekiyor. Django: Varsayılan olarak
from django.db.models import Manager
from django.db.models.query import QuerySet
from django.contrib.auth.models import UserManager
class MyQuerySet(QuerySet):
def _filter_or_exclude(self, negate, *args, **kwargs):
if 'username' in kwargs:
kwargs['username__iexact'] = kwargs['username']
del kwargs['username']
return super(MyQuerySet, self)._filter_or_exclude(negate, *args, **kwargs)
class MyUserManager(UserManager):
def get_query_set(self):
return MyQuerySet(self.model)
User.objects = MyUserManager()
için özel bir yöneticisi alt sınıf Ama bu yaklaşım değildir yaptığını kullanarak sonra Queryset
özel bir alt sınıfını yazma ve _filter_or_exclude
yöntemi geçersiz ve sorunu tespit çalıştı User.objects.get(username='Foo')
yapmayı denediğimde iş ve garip bir hata alıyorum.
Herhangi bir yardım için teşekkür ederiz.
Güncelleştirme: Başlarken tam hata ekliyorum.
/usr/lib/python2.5/site-packages/django/db/models/query.py in get(self, *args, **kwargs)
295 keyword arguments.
296 """
--> 297 clone = self.filter(*args, **kwargs)
298 num = len(clone)
299 if num == 1:
/usr/lib/python2.5/site-packages/django/db/models/query.py in filter(self, *args, **kwargs)
481 set.
482 """
--> 483 return self._filter_or_exclude(False, *args, **kwargs)
484
485 def exclude(self, *args, **kwargs):
/home/ghoseb/src/git/ocricket.git/ocricket/user/models.py in _filter_or_exclude(self, negate, *args, **kwargs)
38 kwargs['username__iexact'] = kwargs['username']
39 del kwargs['username']
---> 40 return super(MyQuerySet, self)._filter_or_exclude(negate, *args, **kwargs)
41
42 class MyUserManager(UserManager):
/usr/lib/python2.5/site-packages/django/db/models/query.py in _filter_or_exclude(self, negate, *args, **kwargs)
499 clone.query.add_q(~Q(*args, **kwargs))
500 else:
--> 501 clone.query.add_q(Q(*args, **kwargs))
502 return clone
503
/usr/lib/python2.5/django/db/models/sql/query.py in add_q(self, q_object, used_aliases)
/usr/lib/python2.5/django/db/models/sql/query.py in add_filter(self, filter_expr, connector, negate, trim, can_reuse, process_extras)
/usr/lib/python2.5/django/db/models/sql/query.py in get_meta(self)
<type 'exceptions.AttributeError'>: 'NoneType' object has no attribute '_meta'
Güncelleme: Bu arada, ben sadece gerçek QuerySet
sınıfa benim _filter_or_exclude
yöntemi içinde mantığı kopyaladığınızda, kusursuz işlemektedir hatırlatmak istedik.
hata da verebilir mi? –
Eklendi. Hatırlattığın için sağol. –
Garip bir hata. Bu hatayı bu kod üzerinde aldığınızı doğrulayabilir misiniz? QuerySet veya Manager geçersiz kılma konusunda ek yöntemler ve miras hiyerarşisinde ek araya giren alt sınıflar yok, ek karışma yok mu? –