Похоже, что ваши модели Projetos
и Maquina
связаны через отношения многие ко многим.Поскольку вы уже определили модель для этого отношения, вы можете сделать ее сквозной моделью и определить поле в одной из таблиц, как показано ниже.
Также см. документы Django для многих ко многим
class Projetos(models.Model):
nomeAlias = models.CharField("Nome do Projeto",max_length=50,
default='Personalizado')
nome = models.CharField("Nome do Projeto(Artifactory)",max_length=50,
primary_key=True)
repositorio = models.CharField("Repositório do Projeto", max_length=150)
remote_war = models.CharField("Nome do WAR do projeto",max_length=150)
class Maquina(models.Model):
nome = models.CharField("Nome da Máquina",max_length=20)
endereco = models.CharField("Endereço da Máquina",max_length=300,
primary_key=True)
projetos = models.ManyToManyField(Projetos, through='RelMaquinaProjeto', related_name='maquinas')
class RelMaquinaProjeto(models.Model):
maquina = models.ForeignKey(Maquina,
on_delete=models.CASCADE,verbose_name="Nome da Máquina")
projeto = models.ForeignKey(Projetos,
on_delete=models.CASCADE, verbose_name="Nome do Projeto")
contexto = models.CharField("Contexto",max_length=20)
Теперь, чтобы выбрать все проекты для хост-объекта, вы можете сделать следующее.
maquina.projetos.all()
Чтобы выбрать все хосты для объекта проекта, вы также можетесделайте
projeto.maquinas.all()
или вы можете использовать сквозную модель для фильтрации при необходимости
#retrieve all maquina-projetos for a given maquina
models.RelMaquinaProjeto.objects.filter(maquina=maquina)