Использование отношений многие ко многим и один ко многим между 3 моделями в одно время [закрыто]
Здравствуйте, я новичок в django, Я хотел бы получить вашу помощь по вопросу, который меня беспокоит. Я знаю, как сделать отношения один ко многим и многие ко многим с помощью Django, только я особенно застрял на данный момент. У меня есть три таблицы (деталь, документ, папка), таблица детали и документа связаны отношениями "многие ко многим", а таблица детали и папки связаны отношениями "один ко многим". Я хочу, чтобы при выборе шаблона в папках все документы, связанные с ним, появлялись в папках.
class Motif(models.Model):
m_designation=models.CharField(max_length=50)
document=models.ManyToManyField(Document)
create_time=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.m_designation
# Create your models here.
class Dossier(models.Model):
statut=(('Valider en Agance','Valider en Agance'),
('Valider controle BEAC','Valider controle BEAC'),
('Rejeter Controleur BEAC','Rejeter Controleur BEAC')
)
devise=(('Euro','EUR'),
('Dollar Americain', 'USD'),
('YEN','JPY'),
('MAD','MAD')
)
agence=models.ForeignKey(Agence,null=True,on_delete=models.SET_NULL)
raison_sociale=models.CharField(max_length=50)
Numero_de_Compte=models.CharField(max_length=50)
motif=models.ForeignKey(Motif,null=True,on_delete=models.SET_NULL)
devise=models.CharField(max_length=50,choices=devise,default='EUR')
cours=models.FloatField(default=650)
mt_devise=models.FloatField()
beneficiaire=models.CharField(max_length=50)
statut=models.CharField(max_length=50,choices=statut,default='Valider en Agance')
create_time=models.DateTimeField(auto_now_add=True)
def mt_xaf(self,):
return int (self.mt_devise * self.cours)
# Create your models here.
class Document(models.Model):
designation=models.CharField(max_length=50)
create_time=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.designation
Допустим, у вас есть
class Pattern:
documents = Many2Many(Document)
class Folder:
pattern = ForeignKey(Pattern)
class Document:
...
Затем вы можете извлечь все документы из папки, как показано ниже:
folder.pattern.documents.all()