模型互相引用 - 我如何才能最有效地解决这个问题?

时间:2016-10-07 18:23:51

标签: python django django-models

我有一个包含两个模型的Django应用程序 - CompanyUser。这些都是单独的文件。每个User都有Companymodel.ForeignKey字段:

company.py:

class Company(models.Model):
    name = models.CharField(max_length=32)
    is_admin = models.BooleanField(default=False)

user.py:

# Ignore the clumsy in this import for a moment
from package.models.company import Company

class User(models.Model):
    name = models.CharField(max_length=32)
    company = models.ForeignKey(Company)

现在,我要做的一件事是向list_admins添加方法Company User),这会给我一个列表恰好将is_admin设置为True的所有用户:

    def list_admins(self):
        return User.object.filter(is_admin=True);

但当然这需要我在公司中导入User,我无法导入User和{{Company 1}} Company同时由于其循环性。

那么如何以Pythonic / Djangoic方式解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

您可以在每个ForeignKey上使用反向Company关系来访问各自的Users

def list_admins(self):
    return self.user_set.filter(is_admin=True)

文件。参考:Following relationships “backward”

答案 1 :(得分:-1)

def list_admins(self):
    return User.object.filter(company__is_admin=True);