我正试图强制模型中的' name '字段在django模板的for循环中只显示一次。
这是我的模特:
class add_engineering_course(models.Model):
name = models.CharField(max_length=50, default='Computer Engineering')
def __str__(self):
return self.name
class add_engineering_course_information(models.Model):
name = models.ForeignKey(add_engineering_course)
university = models.ForeignKey(engineeringUni)
campus = models.CharField(max_length=20, default='Campus')
fees = models.IntegerField()
def __str__(self):
return self.name.name
def university_a(self):
return self.university
def campus_a(self):
return self.campus
def fees_a(self):
return str(self.fees)
我的观点:
def abc_list(request):
abc_listing = add_engineering_course_information.objects.order_by('id')
return render(request, 'theproject/testing.html', {'abc_listing': abc_listing})
我的模板:
{% for x in abc_listing %}
{{ x.name }}<br>
Unviserity: {{ x.university_a }}<br>
Campus: {{ x.campus_a }}<br>
Fees: {{ x.fees_a }}<br><br><br>
{% endfor %}
以上代码会生成this(图片)。
如图所示,名称x.name
多次出现(取决于条目)。
示例:网络工程出现两次,因为其类别中添加了两所不同的大学。
我想要的是this(图片)。
x.name
应该只出现一次,其余的东西(大学,校园,费用)应该正常显示(多次取决于有多少)。
答案 0 :(得分:0)
要实现这一目标,您应该将类别定义为课程信息的单独模型。在模型之间创建多对一关系。然后,您可以继续使用两个for
循环。在第一个(外部循环)中,迭代这组类别。在第二个(内部循环)中,迭代属于每个类别的一组课程。 Django documentation为模型之间的多对一关系提供了很好的演练。