django admin:如何从具有相同FK的2个模型中获取所有值

时间:2016-05-14 18:27:27

标签: python django django-models django-forms django-admin

我正在尝试访问相关模型字段(第二层次结构)的onetomany。这是我的情景:

RealState(模特)

  • 所有者(fk)

CheckingAccount(模特)

  • 平衡
  • 所有者(fk)

Owner(模特)

在我的RealState管理员中,我想查看所有者的selectbox CheckingAccounts ...

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

1在CheckingAccount模型中,确保你有一个可行的admin_link函数

这样的事情:

def get_admin_absolute_url(self):
    if self.pk:
        return resolve_url('admin:checkAccounts_change', self.pk)

def admin_link(self):
    if not self.pk:
        return ''
    return ('<a href={}>{}</a>').format(self.get_admin_absolute_url(),
                                        self.name)
CheckingAccount中的

2添加此函数:

    def get_all_onwers(self):
        return Owner.objects.all()

3在RealState模型中添加此函数:

    def get_all_onwers(self):
        return Owner.objects.all()

4在所有者模型中添加此函数:

    def get_all_CheckingAccount(self):
        return self.CheckingAccount_set.all()

5在RealState admin中:

    def get_all_owners_CheckingAccount(self, obj):
        all_checks_accounts = []
        for owner in obj.get_all_owners():
            all_checks_accounts.append(','.join(checkAccount.admin_link() for chechAccount in owner.get_all_CheckingAccount()))
        return all_checks_accounts

    get_all_owners_CheckingAccount.allow_tags = True

就是这样,也许您需要过滤一些显示两次或更多次的结果,并编辑表单以提示复选框