Джанго:обратный список отношений "многие ко многим"?

StackOverflow https://stackoverflow.com/questions/1421820

  •  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')
    #...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top