我有一个论文和作者的项目,同一作者可以在一些作者的不同顺序(位置)的论文中:
论文[003]标题:Django的ABC
作者:John Wilkins(作者1),Lisa Dude(作者2)
论文[123]标题:高级用户的Python。
作者:John Wilkins(作者1),George Mirage(作者2),Arthur Jones(作者3)
在我的作者模型中,每个作者只使用一个寄存器:
class Author(models.Model):
nombre = models.CharField(max_length=40)
primer_apellido = models.CharField(max_length=40)
segundo_apellido = models.CharField(max_length=40,blank=True)
correo = models.EmailField(blank=True)
institucion = models.CharField(max_length=200)
class Meta:
ordering = ["primer_apellido"]
verbose_name_plural ="Autores"
def __str__(self):
return '%s %s %s' %(self.nombre, self.primer_apellido, self.segundo_apellido)
在Paper模型中,为每张纸准确使用一个寄存器:
class Paper(models.Model):
Areas_Tematicas_Choices = (
('1', 'Currículo médico'),
('2', 'Educación en ciencias básicas'),
)
registro = models.CharField(max_length=4)
titulo = models.CharField(max_length=250)
area_tematica = models.CharField(max_length=2, choices=Areas_Tematicas_Choices)
participantes = models.ManyToManyField(Author, through = 'Contribucion', through_fields= ('trabajo', 'autores'))
class Meta:
ordering = ["registro"]
def __str__(self):
return self.titulo
我需要一个中间模型来设置论文和作者之间的关系:
class Contribucion(models.Model):
trabajo = models.ForeignKey(Paper)
autores = models.ForeignKey(Author)
orden = models.IntegerField()
class Meta:
unique_together = ("trabajo", "orden")
ordering = ["trabajo", "orden"]
verbose_name_plural = "TrabajoAutores"
def __str__(self):
return '%s %s %s' %(self.trabajo, self.autores, self.orden)
在项目的管理页面中,我在文本字段中手动输入作者的“顺序”,然后关系完成。
为了用模板显示数据,我提出了这个观点:
def mandadatos(request):
trabajos = Paper.objects.all()
autores = Author.objects.all()
ordenautores = Contribucion.objects.all()
return render(request, 'carga_contribucion.html', {'trabajos':trabajos, 'autores': autores, 'ordenautores':ordenautores})
最后在模板中:
{% for dato in trabajos.all %}
<div class="row">
<div class="col-md-1">[{{ dato.registro }}]</div>
<div class="col-md-7 ">{{ dato.titulo }}.</div>
<div class="col-md-4"></div>
</div>
<div class="container">
<div class="row ">
<div class="col-md-1"></div>
<div class="col-md-8">
{% for integrantes in dato.participantes.all %}
{{ integrantes.nombre }} {{ integrantes.primer_apellido }} {{ integrantes.segundo_apellido }}{% if not forloop.last %},{% endif %}
{% endfor %}
</div>
<div class="col-md-3"></div>
</div>
</div>
{% endfor %}
我可以检索论文的注册号,论文题目,所有作者,但按字母顺序,不按作者的顺序:
论文[003] 标题:Django的ABC
作者:Lisa Dude(作者2),John Wilkins(作者1)
论文[123] 标题:高级用户的Python。
作者:Arthur Jones(作者3),George Mirage(作者2),John Wilkins(作者1)
如何根据模型Contribucion(中间)中的“orden”字段检索相同的作者组合?问题是模型还是视图?
提前致谢! 古斯塔沃。