1
내 프로젝트에서 http://djangosnippets.org/snippets/562/의 코드를 사용 중입니다. 몇 가지 문제가 있습니다.사용자 정의 체인 가능 쿼리 세트 관리자 생성 문제
내 자신의 ChainableQuerySetManager를 사용하여 관련 객체를 통해 객체를 만들려고하면 재귀 오류가 발생합니다.
ChainableQuerySetManager 소스 :
class ChainableQuerySetManager(models.Manager):
def __init__(self, qs_class=models.query.QuerySet):
super(ChainableQuerySetManager,self).__init__()
self.queryset_class = qs_class
def get_query_set(self):
return self.queryset_class(self.model)
def __getattr__(self, attr, *args):
try:
return getattr(self.__class__, attr, *args)
except AttributeError:
return getattr(self.get_query_set(), attr, *args)
확장 쿼리 세트 :
class ExtendedQuerySet(models.query.QuerySet):
def get_or_None(self, *args, **kwargs):
result = None
try:
result = self.get(*args, **kwargs)
except ObjectDoesNotExist:
pass
return result
그리고 테스트 모델 :
class ExtendedQuerySetTests(TestCase):
def setUp(self):
self.parent = ParentObject.objects.create()
def test_create_someobject_in_parent(self):
someobject = self.parent.create_someobject_throw_related()
:
class ParentObject(models.Model):
value = models.IntegerField(default=0)
def count_someobjects(self):
return self.someobjects.count()
def create_someobject_throw_related(self):
return self.someobjects.create()
def create_someobject(self):
return SomeObject.objects.create(parent=self)
class SomeObject(models.Model):
parent = models.ForeignKey(ParentObject, related_name='someobjects')
value = models.IntegerField(default=1)
objects = ChainableQuerySetManager(ExtendedQuerySet)
테스트 케이스의 모습
귀하의 도움에 감사드립니다. 전체 출처는 https://github.com/RANUX/django-simptools
나는 새로운 사용자라는 것을 알고 있습니다. 그러나 첫 번째 질문을 게시하기 전에 살펴보아야 할 가치가 있습니다. 질문에 코드가 붙여 넣어지고 형식이 지정되었음을 사용자가 스스로 알아 차렸을 것입니다. 연결되지 않았습니다. repo에 연결하면 문제가 해결 될 것이고 repo의 코드가 바뀌고 장래 방문자는 질문의 이점을 누릴 수 없습니다. 나는 downvoter 아니지만, 왜 누군가가 실제로 귀하의 질문 downvoted 이해 : ... | - | – mac
도움 주셔서 감사합니다. –