【发布时间】:2020-05-27 15:14:25
【问题描述】:
我需要输出一个表演者的作品列表。同样的工作可以在两种不同类型的事件中多次执行(例如performanceOfWork 和Event 模型)。
class Work(models.Model):
title = models.CharField(max_length=200) # max_length = required
class performanceOfWork(models.Model):
solo_performer = models.ManyToManyField(Profile)
performed = models.ForeignKey('Work', on_delete=models.CASCADE)
class Event(models.Model):
solo_performer = models.ManyToManyField(Profile)
repertoire = models.ManyToManyField(Work, blank=True)
在视图中,我设法从两个模型中获得了不同的值:
context['repertoire_from_works'] = performanceOfWork.objects.filter(solo_performer=self.get_object().id).values('performed__title').distinct()
context['repertoire_from_events'] = Event.objects.filter(solo_performer=self.get_object().id).values('repertoire__title').distinct()
但是,我该如何处理在两个模型中执行的相同工作?我只想输出一次。这是一个非常不稳定的尝试(它不起作用,因为它检查了一个嵌套循环中的两个值):
<ul>{% for work_works in repertoire_from_works.all %}
{% for work_events in repertoire_from_events.all %}
{% if work_works.performed__title == work_events.repertoire__title%}
{% if forloop.first %}
<li>{{ work_works.performed__title }}</li>
{% endif %}
{% else %}
<li>{{ work_events.repertoire__title }}</li>
<li>{{ work_works.performed__title }}</li>
{% endif %}
{% endfor %}
{% endfor %}
</ul>
【问题讨论】:
标签: python django django-models django-views django-templates