Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建自定义可链接查询集管理器时出现问题_Python_Django - Fatal编程技术网

Python 创建自定义可链接查询集管理器时出现问题

Python 创建自定义可链接查询集管理器时出现问题,python,django,Python,Django,在我的项目中,我使用的代码来自,我遇到了一些问题 当我使用自己的ChaineableQuerySetManager并试图通过相关对象创建对象时,我会得到一个递归错误 ChainableQuerySetManager源: class ChainableQuerySetManager(models.Manager): def __init__(self, qs_class=models.query.QuerySet): super(ChainableQ

在我的项目中,我使用的代码来自,我遇到了一些问题

当我使用自己的ChaineableQuerySetManager并试图通过相关对象创建对象时,我会得到一个递归错误

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 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)
测试用例如下所示:

    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()
谢谢你的帮助。
完整的来源可以在

上找到,我最近也有类似的问题。在查询管理器中,尝试将self.\uu class\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu替换为chaineableQuerySetManager。我从来没有弄清楚这到底是为什么,但它确实为我解决了问题。

我知道你是一个新用户。。。然而,在发布第一个问题之前,可能值得一看:对于其中一个问题,您可能会自己注意到,代码是在问题中粘贴和格式化的,而不是链接的。将其链接到回购协议也是绝对无用的:当你解决了问题时,回购协议中的代码将发生变化,未来的访问者将无法从你的问题中获益。我不是投反对票的人,但我明白为什么有人真的投了你的问题的反对票…:-|