Python Django ORM从另一个管理器调用管理器方法?

Python Django ORM从另一个管理器调用管理器方法?,python,django,Python,Django,关于如何从manager.py中访问其他manager方法的任何提示 无论我做什么,我似乎都无法使用其他经理的方法。Python抱怨它没有定义 如果我在managers.py中导入模型是否会导致问题?什么 managers.py: # Returns the whole family who are active def get_active_dependents_including_guardian( self, consumer, connectedOnly = False ): l

关于如何从manager.py中访问其他manager方法的任何提示

无论我做什么,我似乎都无法使用其他经理的方法。Python抱怨它没有定义

如果我在managers.py中导入模型是否会导致问题?什么

managers.py:

# Returns the whole family who are active
def get_active_dependents_including_guardian( self, consumer, connectedOnly = False ):
    logger.debug('get_active_dependents_including_guardian')
    results = self.model.objects.filter( guardian = consumer,
                                      is_active = True ).order_by('dob')

    if connectedOnly:
        from myir import models
        #OPTIMIZE: this can be optimized if I query for all patient ids for each dependent in one trip.  But I don't even know how to do this yet cause I'm a noob.
        results = [d for d in results if models.DependentPatientID.objects.get_patient_ids(d)[0].patient_id_integer == 0] **#HERE IS PROBLEM**

    return results

# some stuff omitted...
# this is the manager of models.DependentPatientId
class DependentPatientIDManager( models.Manager ):
    def get_patient_ids(self, dependent ):
        dpid = self.model.objects.get( dependent = dependent.id )
        return dpid 
您需要更改:

from myir import models

原因是,您可能已经从django.db导入模型中执行了
,并且名称冲突

现在,

返回一个对象,而不是查询集。因此,
dependentPaientId.objects.get_patient_id(d)[0]
将失败

所以试试这个

if connectedOnly:
    from myir.models import DependentPatientID
    patient_id_integer = 0
    dep_patient_id = DependentPatientID.objects.get_patient_ids(d) 
    if dep_patient_id:
        patient_id_integer = dep_patient_id.patient_id_integer
        results = [d for d in results if patient_id_integer == 0]

        #Or just

        if not patient_id_integer:
            results = []

尝试以下操作:
从myir导入模型作为myir\u模型
并使用
myir\u模型
。或者,
从myir.models导入DependentPaientId
可能会有一点进展。。。现在的错误是:“DependentPaientId”对象不支持索引。说清楚一点,我不知道这个错误是什么意思。事实上,在我回答之后,我意识到,
之后的代码如果只连接:
没有任何用处。这是好东西,谢谢。最后一个问题。。。patient_id_integer是一个可为NULL的int。如何测试is_NULL而不是“==0”。请检查编辑。如果不是患者id整数,您可以执行

class DependentPatientIDManager( models.Manager ):
    def get_patient_ids(self, dependent ):
        dpid = self.model.objects.get( dependent = dependent.id )
        return dpid 
if connectedOnly:
    from myir.models import DependentPatientID
    patient_id_integer = 0
    dep_patient_id = DependentPatientID.objects.get_patient_ids(d) 
    if dep_patient_id:
        patient_id_integer = dep_patient_id.patient_id_integer
        results = [d for d in results if patient_id_integer == 0]

        #Or just

        if not patient_id_integer:
            results = []