Джанго:обратный список отношений "многие ко многим"?
-
07-07-2019 - |
Вопрос
У меня есть две простые модели в models.py:Сервис и Ведущий.Host.services имеет отношения m2m с Сервисом.Другими словами, хост имеет несколько служб, и одна служба может находиться на нескольких хостах;базовый 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
Как мне получить вывод "один ко многим" в интерфейсе администратора с классом "Service" в качестве основы (обратное "многие ко многим"?).
Нужно ли мне использовать '_set.all()'?
Решение
Использование related_name
об услугах:
services = models.ManyToManyField(Service, related_name='hosts')
а потом делай
service.hosts.all()
чтобы получить хосты для предоставления услуги.
Другие советы
Кажется, это делает свое дело:
class Service(models.Model):
servicename = models.CharField(max_length=50)
def hostname(self):
return "\n".join([s.hostname for s in self.hosts_services.all()])
def __unicode__(self):
return self.servicename
class Host(models.Model):
#...
services = models.ManyToManyField(Service, related_name='hosts_services')
#...
Не связан с StackOverflow