Django:多对多关系的反向列表? [英] Django: reverse list of many to many relationship?

查看:187
本文介绍了Django:多对多关系的反向列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在models.py中,我有两个简单的模型:服务和主机。 Host.services与Service具有m2m关系。
换句话说,一个主机有多个服务,一个服务可以驻留在多个主机上。基本的m2m。

I have two simple models in models.py: Service and Host. Host.services has a m2m relationship with Service. In other words, a host has several services and one service can reside on multiple hosts; a basic m2m.

models.py

class Service(models.Model):
        servicename = models.CharField(max_length=50)
        def __unicode__(self):
                return self.servicename
        class Admin:
                pass

class Host(models.Model):
        #...
        hostname = models.CharField(max_length=200)
        services = models.ManyToManyField(Service)
        #...

        def service(self):
                return "\n".join([s.servicename for s in self.services.all()])

        def __unicode__(self):
                return self.hostname

        class Admin:
                pass

如何在管理界面中以服务类为基础获得一对多输出(反向多对多?)。

How do I get a one-to-many output in the admin interface, with the class 'Service' as basis (a reverse many-to-many?).

我需要使用'_set.all()'吗?

Do I need to use '_set.all()' ?

推荐答案

在服务上使用 related_name

services = models.ManyToManyField(Service, related_name='hosts')

然后执行

service.hosts.all()

获取服务的主机。

这篇关于Django:多对多关系的反向列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆