本文介绍了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:多对多关系的反向列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!