如何加入Django中的多对多字段
我以前在Django没有多对多领域的经验。这是我第一次使用它,所以我在这里有点困惑。这就是我所拥有的:如何加入Django中的多对多字段,django,django-queryset,jointable,Django,Django Queryset,Jointable,我以前在Django没有多对多领域的经验。这是我第一次使用它,所以我在这里有点困惑。这就是我所拥有的: #models.py class RefereciaCita(models.Model): titulo = models.CharField(max_length=500, null=True, blank=True, help_text='título da pesquisa') link = models.URLField(blank=True, null=True, h
#models.py
class RefereciaCita(models.Model):
titulo = models.CharField(max_length=500, null=True, blank=True, help_text='título da pesquisa')
link = models.URLField(blank=True, null=True, help_text='link da pesquisa')
#pesquisador = models.ForeignKey('AutorPesquisa',null=True, blank=True,
#help_text='pesquisadores que participam da pesquisa', on_delete=models.SET_NULL)
pesq = models.ManyToManyField('AutoresPesq', related_name='autoresDaPesquisa',through='AutorRef', verbose_name='pesquisador')
def __str__(self):
return self.titulo
class Meta:
verbose_name = "Referência bibliográfica"
verbose_name_plural = "Referências bibliográficas"
class AutoresPesq(models.Model):
nome = models.CharField(max_length=500, null=True, blank=True, help_text='nome do pesquisador')
link = models.URLField(blank=True, null=True, help_text='link do currículo do pesquisador')
pesquisa = models.ManyToManyField('RefereciaCita', through='AutorRef', verbose_name='pesquisador',
related_name='pesquisaDoAutor', help_text='pesquisa que o autor participa')
def __str__(self):
return self.nome
class Meta:
verbose_name = "Autores Pesquisa"
verbose_name_plural = "Autores Pesquisa"
class AutorRef(models.Model):
pesquisa = models.ForeignKey(RefereciaCita, null=True, related_name='pesquisarn',
help_text='pesquisa que o autor participa', on_delete=models.CASCADE)
pesquisador = models.ForeignKey(AutoresPesq, null=True, related_name='autorDaPesquisa',
help_text='pesquisadores que participam da pesquisa', on_delete=models.CASCADE)
def __str__(self):
return self.pesquisador.nome + ", " + self.pesquisa.titulo[:190]
class Meta:
verbose_name = "Autor Pesquisa"
verbose_name_plural = "Autor Pesquisa"
我需要从每个引用中检索它各自的自动回复
因此,在模板中,我会有类似于图片的内容
所以,我需要为每一篇“研究论文”找到它的“作者”
但我对querysets感到困惑。我已经尝试过选择相关和预回迁相关,但这里缺少一些东西
中间的桌子是这样的
对于第一个问题,您可以:
qs_referencia_cita = ReferenciaCita.objects.all() # All ReferenciaCita
for referencia_cita in qs_referencia_cita:
for autores_pesq in referencia_cita.pesq.all():
# Use your autores_pesq
其余的不清楚你在问什么
PS:您不需要两个关系,因为
ManyToManyField
:另一个关系是自动创建的,请参见文档的 是的,谢谢你的帮助。。。我确实喜欢您的示例,但返回了以下'referespeciata'对象没有referenceas中rf的属性'autorespesq_集'
:rf.autorespesq_集中的au.all():print(au)
编辑了我的答案,我没有看到您有两个m2m关系,这是不需要的。您可以使用`rf.pesq.all()`在您的示例中,rf.pesq
是一个对象管理器。是的,@Cyrlop,这很有效。。。非常感谢你的帮助。。。我真的很困惑,因为我以前从未使用过这个功能。。。。再次感谢!很高兴它解决了您的问题,如果这个问题得到解决,请随意接受答案。